表达式的计算结果不是常量



我刚开始学习c++,我不明白这个错误:

std::string AFunction(const std::string& str) {
size_t s = str.length();
char inProgress[s];

return std::string();
}

我得到错误:

错误C2131:表达式不计算为常数

此处:char inProgress[s];

我该如何用str的长度来设置inProgress的大小呢?

问题在标准c++中,数组的大小必须是编译时常量。这意味着在你的程序中下列内容是不正确的:

size_t s = str.length();
char inProgress[s]; //not standard C++ because s is not a constant expression

最好使用std::vector,如下所示:

std::string AFunction(const std::string& str) {
size_t s = str.length();
std::vector<char> inProgress(s); //create vector of size `s`

return std::string{};
}

最新更新