c++ - 如何在 VC++ 中创建可变大小的字符数组

标签 c++ arrays visual-studio mfc

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::stringstd::vector<char> ;
  • 使用支持 C99 可变长度数组作为非标准扩展的编译器;
  • 等一年(希望)在 C++14 中引入动态数组(也许再等一段时间,让您的编译器供应商 catch )。

关于c++ - 如何在 VC++ 中创建可变大小的字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18444318/

相关文章:

c++ - BOOST_PHOENIX_ADAPT_FUNCTION(...) 在模板化容器上使用模板化函数

c++ - 尝试在 Windows 10 上安装 node-ffi 出现错误 : error C2660: 'v8::FunctionTemplate::GetFunction' : function does not take 0 arguments

javascript - 即使发生匹配,$.grep 也会返回空数组

java - 如何用Java创建主菜单?

c - 该程序不打印C语言数组

c++ - 如何禁用包含文件夹的警告?

c# - UWP 应用堆栈跟踪中的行号

c++ - 循环展开有利的条件以及返回率下降的点?

c++ - 在构造函数中进行错误处理而不会失败

image - 在Visual Studio中,如何解决按钮图像质量?