const int sizea = 600;
char sz[sizea];
上面的代码工作正常。但是下面的代码段会导致错误。 我正在开发 visual studio 2005 - MFC 应用程序
CString strFinal;
.......//strFinal value is dynamically changing . .
const int size = strFinal.GetLength();
char sz[size];
Error 2 error C2057: expected constant expression
Error 5 error C2070: 'char []': illegal sizeof operand
Error 4 error C2133: 'sz' : unknown size Error 3 error C2466: cannot allocate an array of constant size 0
最佳答案
在当前版本的 C++ 中,数组必须具有固定大小,由编译时常量指定。如果您需要使用运行时值,那么您的选择是:
- 最方便的是,使用动态数组类,例如
std::string
或std::vector<char>
; - 使用支持 C99 可变长度数组作为非标准扩展的编译器;
- 等一年(希望)在 C++14 中引入动态数组(也许再等一段时间,让您的编译器供应商 catch )。
关于c++ - 如何在 VC++ 中创建可变大小的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18444318/