如何忽略cin中的空格,但只能在第一个空格之后? (C ++)

时间:2017-05-25 19:07:11

标签: c++ cin getline

所以我正在进行文本冒险,其中涉及用户输入命令,然后输入项目的名称。

以下是我的代码的相关部分

string input1, input2, input3;

cout << "-------------\nWhat would you like to do?\n------------" << endl;
cin >> input1 >> input2;


if (input1 == "use") // Use command
{
    cout << "Use " << input2 << "?\n"; 
    use(input2);
}

void use(string item1)
{
    for (int i = 0; i < 2; i++) // Is item1 in inventory?
    {
        if (itemlist[i][0] == item1)     // checks typed name against possible item names
        {
            if (itemlist[i][1] == "yes")  // checks if that item is in player inventory
            {
                 //Do thing
            }
        }
    }
}

游戏中的所有项目及其详细信息都保存在名为itemlist的字符串数组中。

itemlist[i][0]包含每个项目名称,通常是带有空格的多个单词名称,例如&#34;硫酸&#34;

我的问题是关于这一行

cin >> input1 >> input2;

input1是行动,input2是项目。 input1始终是单个字符串,但input2有时是多字符串。

因此,如果用户输入&#34;使用起始房间密钥&#34;,则需要&#34;使用&#34;尽可能input1,而不是采取&#34;开始房间钥匙&#34;作为input2,它只需要&#34;开始&#34;为input2,因此当input2itemlist[i][0]进行检查时,它不匹配。

有没有办法在cin中忽略空格,但只能在input1之后?

我的替代方案是输入操作,然后输入下一个项目名称,然后使用getline,但这确实不太理想。

0 个答案:

没有答案