1

次のような配列にいくつかのテキスト値を追加しようとしています

  • 何らかの値 1
  • いくつかの値 2
  • 何らかの値 3
  • 等..

これが私が従う手順です:

char values_array[3][80];
values_array[0][80] = "Rock and Rolla";
cout << values_array[0] << endl;

次のエラーが表示されます。

invalid conversion from `const char*' to `char' 
4

2 に答える 2

2

エラー メッセージには、問題の内容が正確に記載されています。const char*割り当ては、文字列文字列リテラルの型である を の型であるcharに割り当てようとしていvalues_array[0][80]ます。誤った即時応答は、次のように変更されます。

values_array[0] = "Rock and Rolla";

しかし、配列を割り当てることができないため、これも正しくありません。文字列リテラルをコピーするか、std::vector<std::string>代わりにa を使用することをお勧めします。

std::vector<std::string> values;
values.push_back("Rock and Rolla");

std::cout << values[0] << std::endl;

a を使用するstd::vector<std::string>と、格納できる文字列の数に対するハードコーディングされた制限と、文字列リテラル (または他の文字列) を配列要素にコピーする際の潜在的なバッファー オーバーランの問題が解消されます。

于 2012-11-13T11:29:00.247 に答える
1

タイプが で"Rock and Rolla"あるchar[]をに代入しようとしています。おそらくあなたが望むのは:values_array[0][80]char

char values_array[3][80]
strcpy(values_array[0], "Rock and Rolla");

それにもかかわらず、 C++ で文字列を表すstd::string代わりに使用する必要があります。char*コードは次のようになります。

std::string values_array[3];
values_array[0] = "Rock and Rolla";
于 2012-11-13T11:29:38.613 に答える