我正在编写一个抛出错误的程序:
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时才会出现错误,否则它会正常运行。
我提到了类似的问题,但他们没有回答我的问题。 提前致谢。