5

C#ではこれを行うことができます:

char[] a = new char[] {'a', 'a', 'a'};

しかし、C ++でそのようなことを行うことはできますか?私は試した:

char *a = new char [] {'a', 'a', 'a'};

しかし、それはコンパイルされません。

4

6 に答える 6

6

なぜこれをしないのですか?:

char a[] = {'a', 'a', 'a'};

また、アレイを完全に使用することは避けてください。使用するstd::vector

于 2013-02-10T17:13:00.553 に答える
6

これは C++ 仕様のバグです (この単純な構造をコンパイルできません)。サイズを指定する必要があります

char *a = new char [3] {'a', 'a', 'a'};

http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1469を参照してください。型名を括弧で囲んだ場合、それはnew-type-id ではなく type-idあるため、構文上、サイズ式を省略できることに注意してください。だから、あなたが言うことを可能にする実装を見つけることができるかもしれません

char *a = new (char[]){'a', 'a', 'a'};

これが可能であるという明示的な意図ではないことは明らかですが (new段落内のいくつかの規則はそれを禁止すると解釈できます)。

于 2013-02-10T17:27:17.973 に答える
4

おそらく、C++で配列を使用したくないでしょう。std::vector代わりに使用してください。

3'aに初期化することもできます。

std::vector<char> vectorOfChars(3, 'a');

コンパイラがC++11をサポートしている場合は、初期化子リストを使用することもできます。

std::vector<char> vectorOfChars{'a', 'a', 'a'};
于 2013-02-10T17:14:44.970 に答える
3

私はあなたが欲しいものはこれだと思います:

   const char a[] = {'a', 'a', 'a'};
于 2013-02-10T17:12:28.033 に答える
1

はい、あなたはそれを好きに行うことができます。

char a[] = {'a', 'a', 'a'};

MSDNArrays (C++)からチェックアウトします。

于 2013-02-10T17:13:15.540 に答える
0

文字列 a = "aaa"; a[0] , a[1] ..etc 文字列の 2 次元配列を作成したい場合、これははるかに簡単になります..etc

于 2013-02-10T18:09:55.103 に答える