对于我的项目,输入的一个选项是“I n”,其中n是数字。我试图从子字符串中的“I”的if语句中获取该输入,然后获取该数字以最终使用stringstream将其转换为整数。
这是我现在的测试代码:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[])
{
cout << "Type in \"I 2\": " << endl;
string in = "";
string numstr = "";
while(in != "Q" && in != "q")
{
cin >> in;
//Input cases
if(in.substr(0,1) == "I")
{
numstr = in.substr(1,1); //numstr is the number in string form
cout << in << "+" << numstr << endl; //I want it to output "I+2"
//but it outputs "I+"
}
else
{
cout << "That was not an option. Try again." << endl;
}
}
return 0;
}
现在输出是:
I+
That was not an option. Try again.
我可以更改什么才能识别“2”?当我将子字符串更改为(2,1)时,我得到一个out_of_range异常
答案 0 :(得分:0)
一些评论,因为我有一段时间没有编程,这可能是不正确的,但建议不要使用!=进行字符串比较,我认为如果你使用它可能会更好!in.equalsIgnorecase(“Q “),那么对于你的if语句in.startsWith(”I“)然后而不是1,1,我认为它应该是1,2(或者2,3?),但你的东西是2,1,这没有意义。希望有所帮助。以下是我如何设置它!
while(!in.equalsIgnoreCase"q")
{
cin >> in;
//Input cases
if(in.startsWith("I")
{`enter code here`
numstr = in.substring(1,2); //maybe in.substring(2,3), if original doesn't work
cout << in << "+" << numstr << endl; //I want it to output "I+2"
}
}