webForumDet fria alternativet

Strängar i C++

2 svar · 398 visningar · startad av zmodem

zmodemMedlem sedan apr. 200277 inlägg
#1

Jag är väldigt nybörjare på C++ och får inte det där med strängar att funka... har läst en tråd om det innan här också men den hjälpte inte mig...

Har en bok där följande exempel visas:

#include <iostream.h>
#include <string>

main ()
{
string s1 = "Hello world!";
cout << s1 << endl;
}

Jag stoppar in koden i MS Visual C++ och får följande meddelande:

C:\projekt\cpp\string\string.cpp(10) : error C2065: 'string' : undeclared identifier
C:\projekt\cpp\string\string.cpp(10) : error C2146: syntax error : missing ';' before identifier 's1'
C:\projekt\cpp\string\string.cpp(10) : error C2065: 's1' : undeclared identifier
C:\projekt\cpp\string\string.cpp(10) : error C2440: '=' : cannot convert from 'char [13]' to 'int'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast

vad gör jag för fel? Har fått ungefär samma fel när jag körde koden i en gammal Borland Turbo C++ och den brukar inte vara lika gnällig som Microsofts...

BeatboxMedlem sedan okt. 20013 217 inlägg
#2

Antingen :

#include <iostream.h> 
#include <string> 
using namespace std;

main () 
{ 
string s1 = "Hello world!"; 
cout << s1 << endl; 
}

eller....

#include <iostream.h> 
#include <string> 

main () 
{ 
std::string s1 = "Hello world!"; 
cout << s1 << endl; 
}
SweyMedlem sedan apr. 20003 971 inlägg
#3

std

Ersätt #include <iostream.h> med #include <iostream>. Den förstnämnda är inte standard. Endast C använder .h som filnamnstillägg för header-filer.

string-klassen finns i namnutrymmet std. Om du dessutom använder cstdlib istället för stdlib.h ska (om den följer standard) alla funktioner hamna i namnutrymmet std.

Fördelen med att ha alla standard-funktioner/klasser i std är att du kan skapa funktioner och klasser med samma namn, utan att det blir namnkollision.

Du kommer åt en funktion/klass genom att ange std:: före funktionen/klassen. Vill du inte skriva std kan du importera allting med hjälp av "using namespace std;" eller enstaka funktioner/klasser med "using <funktion eller klass>;". I regel ska man undvika "using namespace".

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)