webForumDet fria alternativet

string

C/C++ur C/C++

20 svar · 388 visningar · startad av Nexus86

Medlem sedan okt. 20023 030 inlägg
Frågan#1

Jag får ett konstigt kompileringsfel i C++. Jag har #include <string.h> men ändå när jag försöker använda

string lcase(string &str);

högst upp i filen till en funktion jag har gjort så får jag dessa fel:

C++ kompilatorn skrev:

C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(23) : error C2146: syntax error : missing ';' before identifier 'lcase'
C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(23) : error C2501: 'string' : missing storage-class or type specifiers
C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(23) : fatal error C1004: unexpected end of file found

Vad är fel?

EDIT // Så vissa inte tror att jag är dum kan jag tillägga att jag har skrivit #include <string.h> över denna rad. :)

Medlem sedan maj 20021 466 inlägg
#2

Du vill använda STL-klassen string? Prova

#include <string>
using namespace std; [i]eller[/i]
using std::string; [i]eller[/i]
std::string istället för string
Medlem sedan okt. 20023 030 inlägg
#3

Okej.. Tack!

Medlem sedan okt. 20023 030 inlägg
#4

Resultat:

Vid "using namespace std;":

C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(5) : error C2871: 'std' : does not exist or is not a namespace
C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(24) : error C2146: syntax error : missing ';' before identifier 'lcase'
C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(24) : error C2501: 'string' : missing storage-class or type specifiers

Vid "using string;":

C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(5) : error C2873: 'string' : symbol cannot be used in a using-declaration
C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(24) : error C2146: syntax error : missing ';' before identifier 'lcase'
C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(24) : error C2501: 'string' : missing storage-class or type specifiers

Vid "std::string":

C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(23) : error C2653: 'std' : is not a class or namespace name
C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(23) : error C2146: syntax error : missing ';' before identifier 'lcase'
C:\Program\Microsoft Visual Studio\MyProjects\Apache\main.cpp(23) : error C2501: 'string' : missing storage-class or type specifiers

Något mera? Alla mina includes är:

#include <stdlib.h>
#include <windows.h>
#include <tlhelp32.h>
#include <string.h>

Saknas någon?

Medlem sedan feb. 20002 300 inlägg
#5

Byt #include <string.h> till: #include <string>

Medlem sedan okt. 20023 030 inlägg
#6

Då övergick det ifrån 4 errors och 0 warnings till 13 errors och 2 warnings.. :e

Medlem sedan okt. 20023 030 inlägg
#7

Sen nu nere i 3 errors och 0 warnings.. hade ett annat fel.. :)

Men det är fortfarande samma fel. :l

Medlem sedan feb. 20002 300 inlägg
#8

Hm.. Du får gärna ge lite mer kod...

En känsla... Testa att lägga till #include <iostream>

Medlem sedan okt. 20023 030 inlägg
#9

Phorpher skrev:

Hm.. Du får gärna ge lite mer kod...

En känsla... Testa att lägga till #include <iostream>

Har provat med det men det hjälpte inte. Kan lägga upp hela cpp-filen. Det ska bli ett litet men bra program till mej själv som gör så att jag kan styra Apache från SysTrayen istället för att behöva ha det ligga nere i TaskBaren hela tiden.

Medlem sedan feb. 20002 300 inlägg
#10

Nu har du #include <iostream.h>
Byt till #include <iostream>

iostream.h innehåller äldre libs och kan därför ge såna fel..

Medlem sedan okt. 20023 030 inlägg
#11

Har alltid trott att det är samma. :)
Men det fungerar fortfarande inte. :l Blir tokig snart.

Medlem sedan maj 20023 372 inlägg
#12

Hm..jag kom och tänka på något helt annat när jag såg rubriken, och tryckte mig in hit direkt, vilken besvikelse... :)

Medlem sedan okt. 20023 030 inlägg
#13

Okej Pellefant. :) Vad var det du hoppades hitta då?

Medlem sedan feb. 20002 300 inlägg
#14

Pellefant skrev:

Hm..jag kom och tänka på något helt annat när jag såg rubriken, och tryckte mig in hit direkt, vilken besvikelse... :)

Jag föredrar också den sortens string! :birp

Nexus86

Vad får du för felmeddelanden då?

Medlem sedan okt. 20023 030 inlägg
#15

Phorpher skrev:

Pellefant skrev:

Hm..jag kom och tänka på något helt annat när jag såg rubriken, och tryckte mig in hit direkt, vilken besvikelse... :)

Jag föredrar också den sortens string! :birp

Nexus86

Vad får du för felmeddelanden då?

Samma fortfarande. :l

Tänkte inte riktigt på stringgrejen. Tänkte att han måste ha sett att det stog i C++.. :e

Medlem sedan feb. 20002 300 inlägg
#16

Men nu när jag tittar på din kod igen så ser jag inte att du använder varken using namespace std eller std::string vid deklarationer.

Lägg using namespace std; Alldeles under alla dina #defines.

Medlem sedan okt. 20023 030 inlägg
#17

Men jag provade med det och då fungerade det inte men nu gör det det. Tack! :)

Medlem sedan feb. 20002 300 inlägg
#18

Nexus86 skrev:

Men jag provade med det och då fungerade det inte men nu gör det det. Tack! :)

Det beror på att du hade inkluderat "iostream.h" istället för "iostream".

Medlem sedan okt. 20023 030 inlägg
#19

Men en sak till, hur gör jag för att göra om en text från string till LPCTSTR? Det går inte med (LPCTSTR)Text.

Medlem sedan feb. 20002 300 inlägg
#20

En LPCTSTR är en C-sträng (char *)

En string har en bunt metoder. Metoden c_str() returnerar en pekare till en C-sträng.

Dvs. Om funktionen foo har en LPCTSTR som inargument så borde det här fungera:

...

string bar;

foo(bar.c_str());

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