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。请注意,如果您给类型名称加上括号,则它是类型 ID而不是新类型 ID,因此在语法上允许您省略大小表达式。所以你也许可以找到一个允许你说的实现

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

尽管很明显,这不是可能的明确意图(并且new段落中的某些规则可以解释为禁止它)。

于 2013-02-10T17:27:17.973 回答
4

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

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

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'};

Arrays (C++)MSDN 签出。

于 2013-02-10T17:13:15.540 回答
0

字符串 a = "aaa"; a[0] , a[1] ..etc 如果你想制作字符串的二维数组..etc 这会容易得多

于 2013-02-10T18:09:55.103 回答