2017-12-04 2 views
-1

私はchar配列を構築しようとしています。エラーは2番目の要素でのみ報告されるのはなぜですか?どのように解決できますか?

#include <iostream> 
#include <vector> 

using namespace std; 


int main(){ 

    static const char array1[] = {"green", "red","red", "green", "green"}; 

} 

私はこれが動作するように期待するが、私は次のエラーを取得する:

enter image description here

+3

'{"緑 "、"赤 "、"赤 "、"緑 "、"緑 "}'は文字の配列ではありません – user463035818

+1

@Someprogrammerdude質問はかなり明確に変更されていますされている)。コード、予想される出力、エラーメッセージがあります。 – Default

答えて

4

あなたはconst char*に減衰char arrayで複数のstring literalsを初期化しようとしています。だからあなたのlist initializationのいずれかで使用する文字は:

const char array1[] = { 'g', 'r', 'r', 'g', 'g' }; 

またはconst char*に配列署名を変更します。

const char* array1[] = { "green", "red", "red", "green", "green" }; 

または単にstd::stringタイプを使用します。

std::string array1[] = { "green", "red","red", "green", "green" }; 

またはより良い、ベクトル文字列の:

std::vector<std::string> v = { "green", "red", "red", "green", "green" }; 
1

これは文字の配列ではありません。その文字列の配列。

"green"は文字の配列であるため、あなたは

static const char* array1[] = {"green", "red","red", "green", "green"};

または

static const std::string array1[] = {"green", "red","red", "green", "green"};

を書くことができ、エラーが2番目のエントリです。

+1

私は意図的に '静的' wasnt(おそらく 'const')だと思います。そして、最初のオプションは 'std :: vector ' – user463035818

+0

@ tobi303でなければなりません。サイズが変更されない場合はベクトルを使う必要はありません。 –

+0

@MM確かに 'std :: array'です。 – user463035818

関連する問題