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.