c++ - 表达式不计算为常数

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

相似文章

随机推荐

最新文章