如何修复以下代码中的(ERROR:SIGSEGV),其原因是什么?

时间:2019-06-12 17:07:54

标签: c++ sigsegv

int main (){
    std::string inp = "" ;
    std::getline(std::cin, inp);
    std::vector<std::string> tempvec;
    std::stringstream ss;
    int dig1,  dig2, ans;
    char space = ' ';

    while (std::getline(ss, inp, space)){
        tempvec.push_back(inp) ;
    }
    dig1 = std::stoi(tempvec[0]);
    dig2 = std::stoi(tempvec[2]);

    if (tempvec[1] == "+"){
        ans = dig1 + dig2;
        std::cout << ans << "\n";
    }

…。我不知道我哪里出了错,有人可以查看我的代码。 plzd,smbdz,mbjvdbjs

1 个答案:

答案 0 :(得分:2)

您忘记填充字符串流:

# LLVM setup
export PATH="$PATH:/usr/src/llvm/bin"
cat > llvm.conf << "HEREDOC"
/usr/src/llvm/lib
HEREDOC

mv llvm.conf /etc/ld.so.conf.d/
ldconfig

export CC=/usr/src/llvm/bin/clang  
export CXX=/usr/src/llvm/bin/clang++

apt-get install -y cmake
apt-get update

dpkg -i setup/libicu55_55.1-7_amd64.deb
dpkg -i setup/Mull-0.3.0-LLVM-8.0-ubuntu-16.04.deb

…与std::stringstream ss;

因此以后的inp都失败了,并且由于没有错误检查,因此向量访问具有不确定的行为。

初始化字符串流:

std::getline

...并添加一些错误检查!