Das Konvertieren eines C ++ string
in ein char-Array ist mit der c_str
Funktion string schnell und dann ganz einfach strcpy
. Wie macht man das Gegenteil?
Ich habe ein char-Array wie char arr[ ] = "This is a test";
:, das zurück konvertiert werden soll in :
string str = "This is a test
.
const char*
, sodass Sie ihm ein String-Literal oder ein char-Array übergeben können (das in dieses zerfällt)."hello world"
sind Arrays. Wenn Siesizeof("hello world")
es verwenden, erhalten Sie die Größe des Arrays (12) und nicht die Größe eines Zeigers (wahrscheinlich 4 oder 8).string
Konstruktor arbeitet beispielsweise nicht mit einer übergebenen Argumentzeichenfolge, die als deklariert istunsigned char * buffer
, was in Byte-Stream-Handling-Bibliotheken sehr häufig vorkommt.std::string str(buffer, buffer+size);
, aberstd::vector<unsigned char>
in diesem Fall ist es wahrscheinlich besser, sich an einen zu halten .str
ist hier keine Konvertierungsfunktion. Dies ist der Name der Zeichenfolgenvariablen. Sie können einen anderen Variablennamen verwenden (zstring foo(arr);
. B. ). Die Konvertierung erfolgt durch den Konstruktor von std :: string, der implizit aufgerufen wird.Eine andere Lösung könnte so aussehen:
Dadurch wird die Verwendung einer zusätzlichen Variablen vermieden.
quelle
cout << "test:" + std::string(arr);
string aString(someChar);
?Bei den Antworten mit den höchsten Stimmen fehlt ein kleines Problem. Das Zeichenarray kann nämlich 0 enthalten. Wenn wir einen Konstruktor mit einem einzelnen Parameter verwenden, wie oben angegeben, gehen einige Daten verloren. Die mögliche Lösung ist:
Ausgabe ist:
quelle
std::string
als Container für Binärdaten verwenden und nicht sicher sein können, dass das Array nicht '\ 0' enthält.AUS:
quelle