在使用getline时调用terminate

时间:2015-08-02 04:58:52

标签: c++

我正在运行时遇到此错误 -

terminate called after throwing an instance of 'std::out_of_range' what(): basic_string::substr 正如本文(http://www.cplusplus.com/reference/string/string/getline/)中所建议的,要读取c ++中的一行,我们使用std::getline (std::cin,name);我的代码是:

   int t;
    cin>>t;
    while(t--)
    {
        string s;
        int num;
        getline(std::cin,s);
        string q= s.substr(0,3);
        num  =stoi(s.substr(4));
    }

当我只运行时:

    string s;
    int num;
    getline(std::cin,s);
    string q= s.substr(0,3);
    num  =stoi(s.substr(4));

有效。我想我必须冲洗我的cin缓冲区。对于这类案件,最佳做法应该是什么?提前致谢

0 个答案:

没有答案