仅在某些情况下调用substr函数时会引发std :: out_of_range错误

时间:2017-05-27 03:39:41

标签: c++ substr

我正在编写一个抛出错误的程序:

terminate called after throwing an instance of 'std::out_of_range'
what(): basic_string::substr: __pos (which is 6) > this->size() (which is 0)

发出此错误的代码是:

int K;
cin >> K;
string input = "CLICK 0";
for (int op = 0; op < 8; op++)
{
    getline(cin, input);
    cout << input.substr(6, 1);
}

如果我这样做的话:

int K;
// cin >> K;
string input = "CLICK 0";
for (int op = 0; op < 8; op++)
{
    getline(cin, input);
    cout << input.substr(6, 1);
}

它运行得非常好。

用户始终输入字符串&#39;输入&#39;的值。形式&#39; CLICK x&#39;所以那里 不会因为输入错误而终止。 (我需要在循环中输入K的值而不是8,但是这也显示错误,所以我暂时放了8个。另外我将字符串初始化为相同的形式以确保它始终是期望的形式,但也没有解决问题。)

只有当我尝试输入K时才会出现错误,否则它会正常运行。

我提到了类似的问题,但他们没有回答我的问题。 提前致谢。

0 个答案:

没有答案