• ベストアンサー

std::stringクラスのc_str()で取得した文字列をいじることは可能ですか?

c++で、以下のようなコードは問題ないでしょうか? // chrの中身の小文字を大文字にする void func(char* chr); std::string str("aaa"); const char* str_p = std.c_str(); func((char*)str_p); ←これは大丈夫ですか? //このあとstrに対して文字列を追加したりいろいろ処理する。 このようにc_strで取得したconst char*をconstをはずして 強引にいじくることは問題ないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

許されていません。 できるかもしれないけど、その結果は保証されません。

rotofrot
質問者

お礼

やはりそうですか。 ありがとうございました。

その他の回答 (2)

  • ddnp009
  • ベストアンサー率25% (15/58)
回答No.3

>強引にいじくることは問題ないでしょうか? 問題です。やってはいけません。 戻り値が const char* である というのは、それが示す文字配列を加工対象にできない、 してはいけないというライブラリ側の意思表示と捉えてください。

rotofrot
質問者

お礼

了解しました。 ありがとうございました。

  • BearCave
  • ベストアンサー率20% (189/909)
回答No.2

可能か不可能でいうと可能ですが、そうゆう利用方法は想定されていないので、推奨されません。

rotofrot
質問者

お礼

おかしなことになるかもということですね。 ありがとうございました。

関連するQ&A