从输入中查找子字符串

时间:2014-10-13 02:44:09

标签: c++ if-statement input substring substr

对于我的项目,输入的一个选项是“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异常

1 个答案:

答案 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"
        }
}