Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用新命令时的数组初始化_C#_C++_Arrays_Initialization - Fatal编程技术网

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[]

在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[] = {'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]……等
如果您想制作字符串的二维数组..etc

Try
chara[]={'a','a','a','a},这会容易得多。容易多了!指定大小:
char*a=newchar[3]{'a','a','a'}
std::vector
的初始值设定项上添加一些东西会很好,比如“如果你足够幸运有一个支持c++11的编译器,那么你可以这样做。”@AntonKovalenko我现在不在c++11上,我的注意力已经转移到c上了。但是如果你想在答案中添加一些内容,我并不介意:-)我认为这里根本不应该使用
new
。使用堆栈或容器。您应该将其作为注释添加到问题中。在我的回答中我不推荐任何东西。我只是修正了他的语法。所有关于堆栈数组或向量的回答并没有真正回答他关于new语法的问题。