23

変換する文字列があり、それを を保持するstring = "apple"このスタイルの C 文字列に入れたいと考えています。どの定義済みメソッドを使用する必要がありますか?char *c{a, p, p, l, e, '\0'}

4

4 に答える 4

34

.c_str()を返しますconst char*。変更可能なバージョンが必要な場合は、自分でコピーを作成する必要があります。

于 2012-08-06T01:10:21.427 に答える
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() は不変に対して機能します。ベクターはメモリを管理します。

于 2012-08-06T01:54:46.333 に答える
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

これは事前定義された方法ではないことは知っていますが、それでも誰かにとって役立つかもしれないと考えました.

于 2015-05-15T13:18:33.030 に答える