所以我正在进行文本冒险,其中涉及用户输入命令,然后输入项目的名称。
以下是我的代码的相关部分
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
,因此当input2
对itemlist[i][0]
进行检查时,它不匹配。
有没有办法在cin中忽略空格,但只能在input1
之后?
我的替代方案是输入操作,然后输入下一个项目名称,然后使用getline,但这确实不太理想。