2017-02-01 7 views
0

動的に割り当てられたconst char配列にconst char配列を割り当てるコードを記述しようとしています。 は私がconst char配列から動的に割り当てられたconst char配列に初期化する

const char staticArray[4] = "abc"; 
const char * ptrDynamicArray; 
ptrDynamicArray = new const char[4](staticArray); 

ようにそれを実行しようとしました。しかし、私は(「配列に括弧で囲まれた初期化子新しい[-fpermissive]」)エラーが発生します。

私は2つの質問がある:

  1. どのように私はそれを解決できる - などの(私はコード::ブロック16.01を使用しています)、それをオフにしますか?

  2. 動的に割り当てられたconst char配列を何とか初期化できますか?

+0

まず、 'std :: string'を使用することをお勧めします。 Cスタイルの文字列をコピーするには、 'strcpy'または同様のルーチンのサービスが必要です。あなたの式 'new const char [4](staticArray);'は、新しく作成された配列の各要素を 'staticArray'で構築しようとします。そして 'char'型は' char [4] 'の型を使って構築できません – WhiZTiM

+0

配列は文字列であるはずですか?それでは['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)を使わないのはなぜですか? –

+0

ストリームをfstreamに渡すには、最後にconst char *が必要です –

答えて

0

アレイを別のアレイから直接コピーできないため、エラーが発生します。手動で要素をコピーするか(std::copyを使用する)か、コピー可能な配列にstd::array<char, 4>を代わりに使用する必要がある場合は、それを行う必要があります。コメントで述べたように

しかしには、最高のは、おそらくここにstd::stringを使用して、古いC-のようなインターフェイスに周りconst char*のポインタを渡す必要がある場合にはそのstd::string::c_str()メンバ関数を使用することです。

関連する問題