使用new时的数组初始化

时间:2013-02-10 17:11:15

标签: c# c++ arrays initialization

在C#中,我可以这样做:

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

但我可以在C ++中做类似的事情吗?我试过了:

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

但它没有编译。

6 个答案:

答案 0 :(得分:6)

为什么不这样做呢? :

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

还要避免完全使用数组。使用std::vector

答案 1 :(得分:6)

这是C ++规范中的一个错误(它不允许这个简单的构造进行编译)。您需要提供尺寸

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

http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1469。请注意,如果您使用类型名称括号,则它是 type-id ,而不是 new-type-id ,因此在语法上允许您省略大小表达式。因此,您可以找到允许您说出

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

虽然很明显,这不是明确的意图(new段落中的某些规则可以被解释为禁止它)。

答案 2 :(得分:4)

您可能不想在C ++中使用数组。请改用std::vector

您甚至可以将其初始化为3'a's。

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

如果您的编译器支持C ++ 11,您甚至可以使用初始化列表。

std::vector<char> vectorOfChars{'a', 'a', 'a'};

答案 3 :(得分:3)

我认为你想要的是:

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

答案 4 :(得分:1)

是的,你可以这样做;

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

MSDN 中查看Arrays (C++)

答案 5 :(得分:0)

string a =“aaa”; a [0],a [1] ..等等 如果你想制作string..etc的二维数组

,这将会容易得多