在 C# 中,我可以这样做:
char[] a = new char[] {'a', 'a', 'a'};
但是我可以在 C++ 中做类似的事情吗?我试过:
char *a = new char [] {'a', 'a', 'a'};
但它不编译。
在 C# 中,我可以这样做:
char[] a = new char[] {'a', 'a', 'a'};
但是我可以在 C++ 中做类似的事情吗?我试过:
char *a = new char [] {'a', 'a', 'a'};
但它不编译。
为什么不这样做呢?:
char a[] = {'a', 'a', 'a'};
还要完全避免使用数组。采用std::vector
这是 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
段落中的某些规则可以解释为禁止它)。
您可能不想在 C++ 中使用数组。改用 a std::vector
。
您甚至可以将其初始化为 3'a's。
std::vector<char> vectorOfChars(3, 'a');
如果你的编译器支持 C++11,你甚至可以使用初始化列表。
std::vector<char> vectorOfChars{'a', 'a', 'a'};
我想你想要的是这样的:
const char a[] = {'a', 'a', 'a'};
字符串 a = "aaa"; a[0] , a[1] ..etc 如果你想制作字符串的二维数组..etc 这会容易得多