Wie string in char* konvertieren?
-
Habs versucht per strcpy aber damit kann man nur char* in char* kopieren.
-
std::string oder CString?
-
Tjo bin mir nicht sooo sicher. Ich includiere <cstring> aber benutzt den namespace std.
Deklariert habe ich die Variable als
string name;
-
ist dann wohl std::string
darum lässt man das using namespace std; ja auch wech -.-
ich mein der hat ne Funktion namens: c_str() ... guck einfach
-
Das
string tmp = "SELECT SNr FROM Sendung WHERE RollkartenNr = " + erg.at(0) + ";"; char *sql = tmp.c_str();
geht nicht...
c:\Dokumente und Einstellungen\Chris\Desktop\libmysqltest\myTest.cpp(190): error C2440: 'Initialisierung': 'const char *' kann nicht in 'char *' konvertiert werden
-
#include <iostream> #include <string> int main() { std::string tmp = "test string"; char *str; strcpy(str, tmp.c_str()); std::cout << str << std::endl; return 0; }
:p
-
Mhh ist das immer so umständlich
-
[quote="electric_juice"]
std::string tmp = "test string"; char *str; strcpy(str, tmp.c_str());
Was soll denn der Blödsinn!? Das Ding stürtzt die gnadenlos ab..
Du hast ja nicht mal Speicher für den String reserviert... wohin soll er denn dann den String hinkopieren?Also, wenn Du wirklich ein "char*" haben willst (und keinen "const char*), dann nimm:
char *str = strdup(tmp.c_str()); // mache was mit dem str free(str);
-
Hallo
UNeverNo schrieb:
Tjo bin mir nicht sooo sicher. Ich includiere <cstring> aber benutzt den namespace std.
Deklariert habe ich die Variable als
string name;
Du solltest <string> inkludieren und nicht <cstring>, wenn du std::string benutzen willst.
chrische
-
Jochen Kalmbach schrieb:
Also, wenn Du wirklich ein "char*" haben willst (und keinen "const char*), dann nimm:
Doch, eigentlich soll es ein const char* sein, aber ich dachte, da man const eh nicht mehr ändern kann, würde ein char* reichen
-
Ja, const darf man nicht ändern. Aber der Compiler weiß ja nicht, daß du die Zeichenfolge nicht ändern willst - der sieht nur, daß du den Zeiger einem (variablen) char* zuweisen willst und das ist nicht erlaubt. Als Lösung bleibt dir nichts anderes übrig, als einen "const char* sql = tmp.c_str();" zu verwenden.
Btw, verwende lieber die strings, solange es geht. Das Zeigergegurke kann schnell ins Auge gehen, wenn der String selber zwischenzeitlich geändert wird:
string tmp="Hallo Welt"; const char* text=tmp.c_str(); tmp+="!!!";//Reorganisation des Speichers, kopiert die Daten möglicherweise um cout<<text;//BUMM const char* data; while(!ende) { string tmp;cin>>tmp; data = tmp.c_str(); ... }//tmp wird gelöscht und gibt Speicher frei ... cout<<data;//BUMM
-
Ja, strings sind mir auch lieber, das Problem ist nur, dass eine Methode es so erwartet
Werde ich nachher mal probieren, wenn der Fehler mit den nervigen Includes gelöst ist