webForumDet fria alternativet

string

20 svar · 388 visningar · startad av Nexus86

Nexus86Medlem sedan okt. 20022 683 inlägg
#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. :)

Marcus EMedlem sedan maj 20021 294 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
Nexus86Medlem sedan okt. 20022 683 inlägg
#3

Okej.. Tack!

Nexus86Medlem sedan okt. 20022 683 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?

PhorpherMedlem sedan feb. 20002 059 inlägg
#5

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

Nexus86Medlem sedan okt. 20022 683 inlägg
#6

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

Nexus86Medlem sedan okt. 20022 683 inlägg
#7

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

Men det är fortfarande samma fel. :l

PhorpherMedlem sedan feb. 20002 059 inlägg
#8

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

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

Nexus86Medlem sedan okt. 20022 683 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.

PhorpherMedlem sedan feb. 20002 059 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..

Nexus86Medlem sedan okt. 20022 683 inlägg
#11

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

PellefantMedlem sedan maj 20022 614 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... :)

Nexus86Medlem sedan okt. 20022 683 inlägg
#13

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

PhorpherMedlem sedan feb. 20002 059 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å?

Nexus86Medlem sedan okt. 20022 683 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

PhorpherMedlem sedan feb. 20002 059 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.

Nexus86Medlem sedan okt. 20022 683 inlägg
#17

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

PhorpherMedlem sedan feb. 20002 059 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".

Nexus86Medlem sedan okt. 20022 683 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.

PhorpherMedlem sedan feb. 20002 059 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());

...
Genererad på 384 ms · cache AV · v20260730165559-full.f96bc7eb