C# 使用新命令时的数组初始化
在C#中,我可以这样做:C# 使用新命令时的数组初始化,c#,c++,arrays,initialization,C#,C++,Arrays,Initialization,在C#中,我可以这样做: char[] a = new char[] {'a', 'a', 'a'}; 但是我能在C++中做类似的事情吗?我试过: char *a = new char [] {'a', 'a', 'a'}; 但它不能编译。我想你想要的是: const char a[] = {'a', 'a', 'a'}; 为什么不这样做呢 char a[] = {'a', 'a', 'a'}; 还要避免完全使用数组。使用std::vector是的,你可以这样做 char a[]
char[] a = new char[] {'a', 'a', 'a'};
但是我能在C++中做类似的事情吗?我试过:
char *a = new char [] {'a', 'a', 'a'};
但它不能编译。我想你想要的是:
const char a[] = {'a', 'a', 'a'};
为什么不这样做呢
char a[] = {'a', 'a', 'a'};
还要避免完全使用数组。使用
std::vector
是的,你可以这样做
char a[] = {'a', 'a', 'a'};
从MSDN检查。 < p>您可能不想在C++中使用数组。改用a 你甚至可以将它初始化为3'a's
std::vector<char> vectorOfChars(3, 'a');
std::向量向量(3,'a');
如果您的编译器支持C++11,您甚至可以使用初始化器列表
std::vector<char> vectorOfChars{'a', 'a', 'a'};
std::向量向量{'a','a','a'};
> p>这是C++规范中的一个错误(它不允许编译这个简单的构造)。你需要提供尺寸
char *a = new char [3] {'a', 'a', 'a'};
看。请注意,如果将类型名称括起来,则它是一个类型id,而不是新的类型id,因此在语法上允许您省略大小表达式。因此,您可以找到一个实现,它允许您
char *a = new (char[]){'a', 'a', 'a'};
尽管很明显,这不是明确的意图,这是可能的(并且新的段落中的一些规则可以解释为禁止这样做) 字符串a=“aaa”;
a[0]、a[1]……等
如果您想制作字符串的二维数组..etcTrychara[]={'a','a','a','a},这会容易得多代码>。容易多了!指定大小:char*a=newchar[3]{'a','a','a'}
在std::vector
的初始值设定项上添加一些东西会很好,比如“如果你足够幸运有一个支持c++11的编译器,那么你可以这样做。”@AntonKovalenko我现在不在c++11上,我的注意力已经转移到c上了。但是如果你想在答案中添加一些内容,我并不介意:-)我认为这里根本不应该使用new
。使用堆栈或容器。您应该将其作为注释添加到问题中。在我的回答中我不推荐任何东西。我只是修正了他的语法。所有关于堆栈数组或向量的回答并没有真正回答他关于new语法的问题。