首页 > 解决方案 > 我认为我的变量没有正确分配

问题描述

我是 C++ 新手,试图制作一个简单的程序来运行从 3 到 300 的素数,但似乎存在这个问题:

main.cpp:23:27: error: no match for ‘operator+’ (operand types are ‘std::string’ {aka ‘std::__cxx11::basic_string’} and ‘int’)

我的代码中有哪些错误?我知道有很多,但我感谢任何支持为我指出它们,谢谢。

int main() {
    int i = 0;
    int num = 0;
    string prime = "";
    
    for (i = 3; i <= 300; i++) {
        int counter = 0;
        for (num = i; num >= 1; num--) {
            if (i % num == 0) {
                counter = counter + 1;
            }
        }
        if (counter == 2) {
            prime = prime + i + " ";
        }
    }
    cout << "Prime numbers: ";
    cout << prime;
}

标签: c++

解决方案


仔细查看错误信息。它说,在第 23 行,您正在尝试进行加法运算 ( +),其中左侧是 a string,右侧是 a int。您没有发布完整的代码,所以我不确定第 23 行的确切位置,但我怀疑是这一行:

prime = prime + i + " ";

您应该先将整数转换为字符串,而不是尝试将整数添加到字符串中。尝试这样的事情:

prime = prime + std::to_string(i) + " ";

推荐阅读