我刚开始学习 C++,我不明白这个错误:
std::string AFunction(const std::string& str) {
size_t s = str.length();
char inProgress[s];
return std::string();
}
我得到错误:
错误 C2131:表达式未计算为常量
这里:char inProgress[s];
设置 inProgress
大小和 str
的长度我必须做什么?
回答1
问题是在标准 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{};
}