在c ++中将String转换为Cstring

时间:2012-08-06 01:08:20

标签: c++ string cstring

我是转换此string="apple"的字符串,并希望将其放入此样式的c-string char *c,其中包含{a,p,p,l,e,'\0'}。我应该使用哪种预定义方法? 谢谢你。

3 个答案:

答案 0 :(得分:23)

.c_str()返回const char*。如果您需要可变版本,则需要自己制作副本。

答案 1 :(得分:9)

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()适用于不可变的。矢量将为您管理内存。

答案 2 :(得分:0)

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

我知道这不是预定义的方法,但认为它可能对某些人有用。