string variablen
-
ich habe eine variable
string y ="test";
und möchte diese in eine variable
LPCTSTR x= "";
diese soll als Inhalt y bekommen, aber
LPCTSTR x= y;
funktioniert logischerweise nicht... was muss ich tun...
-
strcpy, memcpy - so mach ich als alter Cler das..
nicht aufregen, ich weiß, dass des hier des C++-Forum ist *g*
Strings gibt es im C/C++ in dem Sinne nicht.
Der Datentyp string ist eigentlich ein Pointer auf ein char-Array.
wenn Du "LPSTR = string" machst, dann weißt du dem Einen nur ne Adressse zu, kopierst aber die Zeichenkette nicht.
-
DocJunioR schrieb:
Der Datentyp string ist eigentlich ein Pointer auf ein char-Array.
Komisch, bei mir ist das eine Klasse.
@luiggi:
Und die hat eine Memberfunktion c_str, die macht genau das, was du hier brauchst (wenn du nicht gerade UNICODE definiert hast).
-
Bitte beachten das c_str() const char* liefert und deshalt nur lesend zugegriffen werden sollte.
-
also nochmal im detail..
els erstes setze ich einen string aus einem string und einer Zahl zusammen
int x=1; string modem = "m"; string y = ""; stringstream stream; string str = ""; stream.str(""); stream.clear(); stream << x; str = stream.str(); y = modem + str;
dieser string Y liefert mir in einer schleife die bezeichner meiner [Section] in einem Inifile.. also [m1] [m2] [m3] usw..
jetzt will ich aus dem inifile bestimmte entry auslesen
char pfad[50]; GetPrivateProfileString(y,"name","stop",name,sizeof(name),ININame); char pfad[50]; GetPrivateProfileString(y,"pfad","stop",pfad,sizeof(pfad),ININame);
Ich habe aber jetzt das problem, das bei dieser funktion der [section] bezeicher als LPCTSTR Y = "M1" usw. deklariert sein muss...
dh, ich muss meine string Y irgendwie zu einer LPCTSTR Y machen..
kann mir da jemand helfen??
-
Na da war das mit dem c_str() schon richtig:
GetPrivateProfileString(y.c_str(),"pfad","stop",pfad,sizeof(pfad),ININame);
//Wenn der Compiler wegen const char* mault:
GetPrivateProfileString(const_cast<char*>(y.c_str()),"pfad","stop",pfad,sizeof(pfad),ININame);
-
IHR SEIT EINFACH DIE BESTEN!!
-
@MFK
für Unicode Zeichen gibt es ja std::wstring@Knudellbaer
öhm, der const_cast ist sehr gefährlich, da du ja nicht weisst, wie std::string intern arbeitet. Wenn die Funktion nun versucht den String zu verändern, dann entsteht undefiniertes Verhalten. Wenn std::string zB. über Referenzzählung implementiert ist, kannst du das komplette System zerschießen
-
Ja deswegen ja der Hinweis.
Aber wenn Du ne Routine hast die den String nur kurzfirstig liest, kopierst Du den dann in ein char um ? Denke nicht. Manche Compiler sind aber zäh wenns um die Übergabe geht ;o)
-
Wenn die Funktion den String nicht ändert (durch const char* gekenzeichnet), dann kopier ich natürlich nicht um. Aber ich weiss ja nicht genau, was die genannte Funktion macht (ist ja kein ISO C++), deswegen die Warnung
-
Knuddlbaer schrieb:
Bitte beachten das c_str() const char* liefert und deshalt nur lesend zugegriffen werden sollte.
Der meinung bin ich auch