std::string から char* 質問する

std::string から char* 質問する

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;
    

おすすめ記事