C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: const char* Buf[] の値を変更したい


(過去ログ 104 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■62377 / inTopicNo.1)  const char* Buf[] の値を変更したい
  
□投稿者/ rirakuma (1回)-(2011/10/05(Wed) 21:15:23)

分類:[C/C++] 

const char* Buf[] の値を変更したいと思っています。

色々試して見ましたができません。
考え方としては、const_castを用いてみました。
例えば、const char* Buf[]の中身が

const char* Buf[]=
{
"aaa" ,"bbb",

"ccc" ,"ddd"

};
という値が入っていて、"bbb"を変更したいとき、const_castを用いて、
strcpy(const_cast<char*>(B[1]) ,"SSS" );
とおこないましたが、具体的にcharのサイズを定義していなかったため、segmentationfault
になってしまいました。

何かよい方法があれば、教えてください!!
開発環境はubuntu11.04 c++です。
よろしくお願い致します。

引用返信 編集キー/
■62380 / inTopicNo.2)  Re[1]: const char* Buf[] の値を変更したい
□投稿者/ 774RR (615回)-(2011/10/05(Wed) 21:36:45)
もともと const のものを書き換えることは未定義動作(=やってはいけない)
できないのが正しい。で、どうすればよいかは「何がしたいか」次第。
真にやりたいことは const char を書き換えたいではないはず。

引用返信 編集キー/
■62383 / inTopicNo.3)  Re[2]: const char* Buf[] の値を変更したい
□投稿者/ επιστημη (2674回)-(2011/10/05(Wed) 22:33:35)
επιστημη さんの Web サイト
> 真にやりたいことは const char を書き換えたいではないはず。

コレ↓ではいかんのか、と。

#include <iostream>

int main() {
  const char* B[] = { "aaa", "bbb", "ccc", "ddd" };
  B[1] = "SSS";
  for ( int i = 0; i < 4; ++i ) {
    std::cout << B[i] << std::endl;
  }
}

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -