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
20 svar · 388 visningar · startad av Nexus86
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. :)
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
Okej.. Tack!
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?
Byt #include <string.h> till: #include <string>
Då övergick det ifrån 4 errors och 0 warnings till 13 errors och 2 warnings.. :e
Sen nu nere i 3 errors och 0 warnings.. hade ett annat fel.. :)
Men det är fortfarande samma fel. :l
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.
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..
Har alltid trott att det är samma. :)
Men det fungerar fortfarande inte. :l Blir tokig snart.
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... :)
Okej Pellefant. :) Vad var det du hoppades hitta då?
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å?
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
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.
Men jag provade med det och då fungerade det inte men nu gör det det. Tack! :)
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".
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.
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());
...