Wie kann ich eine std::string
zu einer char*
oder eine const char*
?
Antworten
Zu viele Anzeigen?Die Konvertierung von c++ std string in C style string ist jetzt wirklich einfach.
Hierfür haben wir string::copy
Funktion, die std string leicht in C style string konvertiert. Referenz
string::copy
Funktionen Parameter seriell
- Zeichenfolgenzeiger
- Größe der Zeichenfolge, wie viele Zeichen kopiert werden sollen
- Position, von der aus das Zeichen kopiert wird
Eine weitere wichtige Sache,
Diese Funktion fügt kein Nullzeichen am Ende der Operation an. Wir müssen es also manuell einfügen.
Code-Prüfung sind in unten -
// char string
char chText[20];
// c++ string
string text = "I am a Programmer";
// conversion from c++ string to char string
// this function does not append a null character at the end of operation
text.copy(chText, text.size(), 0);
// we need to put it manually
chText[text.size()] = '\0';
// below statement prints "I am a Programmer"
cout << chText << endl;
Vice versa, Die Konvertierung von C-Stil String zu C + + std String ist viel mehr einfacher
Es gibt drei Möglichkeiten der Konvertierung von String im C-Stil in C++ std string
Die erste ist die Verwendung eines Konstruktors,
char chText[20] = "I am a Programmer";
// using constructor
string text(chText);
Die zweite ist die Verwendung von string::assign
Methode
// char string
char chText[20] = "I am a Programmer";
// c++ string
string text;
// convertion from char string to c++ string
// using assign function
text.assign(chText);
Der dritte ist der Zuweisungsoperator (=), bei dem die String-Klasse die Überladung des Operators verwendet
// char string
char chText[20] = "I am a Programmer";
// c++ string
// convertion from char string to c++ string using assignment operator overloading
string text = chText;
Das dritte kann auch wie folgt geschrieben werden -
// char string
char chText[20] = "I am a Programmer";
// c++ string
string text;
// convertion from char string to c++ string
text = chText;
Sagen wir, string str="Stapel";
1) Konvertierung von String in Char *
char* s_rw=&str[0];
Das obige char* (d.h. s_rw) ist lesbar und schreibbar und zeigt auf die Basisadresse Adresse der Zeichenkette, die in char* umgewandelt werden muss
2) Konvertierung von String in const char *
const char* s_r=&str[0];
Das obige const char* (d.h. s_r) ist lesbar, aber nicht schreibbar und zeigt auf die Basisadresse der Zeichenkette.
- See previous answers
- Weitere Antworten anzeigen