C++ 字符串文字边界数组新表达式第一维参数示例
发件人: 在以下情况下,指定第一个维度的表达式是错误的: 该值小于大括号内初始值设定项中提供的数组元素数,包括字符串文字上的终止\0。 有人能举一个例子说明字符串文字太长,以至于它限制了数组新表达式的第一个维度吗 我似乎想不出一个: 我看到的唯一类似的东西是autop1=newchar[1][5]{xyz};但这与第一维度无关 有人能举一个例子说明字符串文字太长,以至于它限制了数组新表达式的第一个维度吗 对不起,但是。。。如果我理解正确,问题在于字符串文字的数量,而不是单个字符串文字的长度 我的意思是:问题是当你把东西写成C++ 字符串文字边界数组新表达式第一维参数示例,c++,initialization,c++14,string-literals,C++,Initialization,C++14,String Literals,发件人: 在以下情况下,指定第一个维度的表达式是错误的: 该值小于大括号内初始值设定项中提供的数组元素数,包括字符串文字上的终止\0。 有人能举一个例子说明字符串文字太长,以至于它限制了数组新表达式的第一个维度吗 我似乎想不出一个: 我看到的唯一类似的东西是autop1=newchar[1][5]{xyz};但这与第一维度无关 有人能举一个例子说明字符串文字太长,以至于它限制了数组新表达式的第一个维度吗 对不起,但是。。。如果我理解正确,问题在于字符串文字的数量,而不是单个字符串文字的长度 我的
auto p = new char[1][10]{"abc", "123"};
对于二维字符数组
如果是一维字符数组,请参见Barry的答案。类似以下内容:
new const char[2]{"this is way more than one character"};
请注意,gcc甚至不编译新的const char[2]{x},但这是一个正交问题。new char[3]{abc}。请注意,GCC无法正确处理此问题。是的,GCC是我失败的原因。为什么编译很好并且不会引发异常,但是如果您取消注释该行,它会在VS中崩溃,或者在clang 4.0中不会打印任何内容。例如?@KillzoneKid您无法在编译时检测到运行时错误?@Barry应该在运行时引发异常或返回nullptr,不行either@KillzoneKid看起来clang只是抛出了bad_alloc而不是这看起来编译和运行良好,即使它不应该@KillzoneKid-也可以用我的clang++和我的g++编译良好;我的g++运行良好;但是随着我的叮当声崩溃了++。@KillzoneKid-如果我没记错的话,是ubundeindebahaviour;这样才能正确运行。