Преобразование String в Cstring в С++

Я использую строку для преобразования этого string="apple" и хочу поместить это в c-строку этого стиля char *c, которая содержит {a,p,p,l,e,'\0'}. Какой предопределенный метод я должен использовать? Спасибо вам заранее.

Ответ 1

.c_str() возвращает a const char*. Если вам нужна изменчивая версия, вам нужно будет создать копию самостоятельно.

Ответ 2

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() работает неизменным. Вектор будет управлять памятью для вас.

Ответ 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

Я знаю, что это не предопределенный метод, но думал, что это может быть полезно кому-то.