std::stringをchar*またはchar[]データ型に変換したいです。
std::string str = "string";
char* chr = str;
結果: 「エラー: 'std::string' を 'char' に変換できません...」
これを行うにはどのような方法がありますか?
ベストアンサー1
c_str()
自動的に変換されることはありません (ありがたいことに)。 C 文字列バージョンを取得するには、メソッドを使用する必要があります。
std::string str = "string";
const char *cstr = str.c_str();
.c_str()
を返しますconst char *
。非 const が必要な場合はchar *
、 を使用します.data()
。
std::string str = "string";
char *cstr = str.data();
その他のオプション:
文字をベクトルにコピーします。
std::vector<char> cstr(str.c_str(), str.c_str() + str.size() + 1);
その後、
cstr.data()
ポインターをお伝えします。このバージョンは、終了する をコピーします
\0
。 必要ない場合は、 を削除する+ 1
か、 を実行してくださいstd::vector<char> cstr(str.begin(), str.end());
。手動で割り当てられた配列へのコピー: (手動のメモリ管理は間違いやすいため、通常は避けるべきです)
std::string str = "string"; char *cstr = new char[str.size() + 1]; std::strcpy(cstr, str.c_str()); // do stuff delete [] cstr;