如何在 VC++ 中创建可变大小的 char 数组

ANj*_*aNA 6 c++ arrays mfc visual-studio

const int sizea = 600; 
char sz[sizea];
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常。但下面的代码段会导致错误。我正在开发 Visual Studio 2005 - MFC 应用程序

CString strFinal;

.......//strFinal value is dynamically changing . . 

const int size = strFinal.GetLength();
char sz[size];
Run Code Online (Sandbox Code Playgroud)

错误 2 错误 C2057:预期的常量表达式
错误 5 错误 C2070:'char []':非法 sizeof 操作数
错误 4 错误 C2133:'sz':未知大小 错误 3 错误 C2466:无法分配常量大小 0 的数组

Mik*_*our 5

在当前版本的 C++ 中,数组必须具有固定大小,由编译时常量指定。如果您需要使用运行时值,那么您的选择是:

  • 最方便移植的是,使用动态数组类,例如std::stringstd::vector<char>
  • 使用支持 C99 可变长度数组作为非标准扩展的编译器;
  • 等待一年(希望)在 C++14 中引入动态数组(也许要等待更长的时间让您的编译器供应商赶上)。