标准 C++ 不支持 C99 和 g++ 的可变长度数组 (VLA)。
在标准 C++ 中,您可以使用 eg std::vector,如下所示(您的代码已修改):
#include <iostream>
#include <vector>
int main(){
int sz;
std::cout<<"number?\n";
std::cin>>sz;
// This line
std::vector<double> dynamic_arr( sz ); // Initialized to zeroes.
//output the value just to use the array.
std::cout<<dynamic_arr[0]<<std::endl;
}
此外,对于您可以使用的字符串std::basic_string,通常通过typedefsstd::string和std::wstring.
通常,主要问题只是动态大小,如上所述,然后很好地完成工作std::vector。std::basic_string但是,有时问题是效率,如何对动态大小的数组进行极其高效的堆栈分配。许多 C 和 C++ 实现为此支持非标准函数alloca,但不幸的是,它们在处理故障的方式上存在很大差异。据我所知,也没有通用的图书馆解决方案。但令人高兴的是,我所知道的主要用途(尽管如前所述alloca可用于许多平台)一直用于 Windows 中的字符串编码翻译,随着时间的推移,它的相关性越来越低,而且 Windows 程序越来越纯面向 Unicode。