1088 Stimmen

Wie konvertiert man einen std::string in const char* oder char*?

Wie kann ich eine std::string zu einer char* oder eine const char* ?

10voto

devsaw Punkte 989

Sehen Sie sich das an:

string str1("stackoverflow");
const char * str2 = str1.c_str();

Beachten Sie jedoch, dass dies eine const char * .

Für eine char * verwenden strcpy um es in ein anderes zu kopieren char Array.

9voto

cegprakash Punkte 2595
char* result = strcpy((char*)malloc(str.length()+1), str.c_str());

2voto

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

  1. Zeichenfolgenzeiger
  2. Größe der Zeichenfolge, wie viele Zeichen kopiert werden sollen
  3. 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;

0voto

Vineeth Peddi Punkte 156

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.

-4voto

anish Punkte 6040

Versuchen Sie dies

std::string s(reinterpret_cast<const char *>(Data), Size);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X