String naar Cstring converteren in C++

Ik heb een tekenreeks om te converteren, string = "apple" en wil die in een C-tekenreeks van deze stijl, char *c, plaatsen die {a, p, p, l, e, '\0'}. Welke vooraf gedefinieerde methode moet ik gebruiken?


Antwoord 1, autoriteit 100%

.c_str() retourneert een const char*. Als je een veranderlijke versie nodig hebt, moet je zelf een kopie maken.


Antwoord 2, autoriteit 31%

vector<char> toVector( const std::string& s ) {
  string s = "apple";  
  vector<char> v(s.size()+1);
  memcpy( &v.front(), s.c_str(), s.size() + 1 );
  return v;
}
vector<char> v = toVector(std::string("apple"));
// what you were looking for (mutable)
char* c = v.data();

.c_str() werkt voor onveranderlijk. De vector beheert het geheugen voor u.


Antwoord 3

string name;
char *c_string;
getline(cin, name);
c_string = new char[name.length()];
for (int index = 0; index < name.length(); index++){
    c_string[index] = name[index];
}
c_string[name.length()] = '\0';//add the null terminator at the end of
                              // the char array

Ik weet dat dit niet de voorgedefinieerde methode is, maar ik dacht dat het toch voor iemand nuttig zou kunnen zijn.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes