我刚开始学习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{};
}