我正在尝试使用std::cin
,同时让一个选项循环回到开始。该循环可以正常工作,但是当我在if
语句之一中添加一个附加选项然后键入该语句时,它不会认为我选择的是一个选项。
#include <iostream>
#include <string>
#include <windows.h>
#include <chrono>
#include <thread>
using namespace std;
int main() {
string choice;
char restart;
do {
choice.clear();
cout << "Which do you take? " << endl;
cin >> choice;
if (choice == "all") {
//cout code
restart = 'y';
}
else if (choice == "dagger" || choice == "the dagger") {
choice.clear();
cout << "You pick up the dagger" << endl << endl;
return 0;
}
else {
choice.clear();
cout << "That isn't an option, pick again... "<< endl << endl;
sleep_for(1s);
restart = 'y';
}
} while (restart == 'y');
}
当我键入“ dagger” 时,它可以正常工作,但是当我键入“ dagger” 时,它说运行else
代码,然后循环回到“你要带哪个” ,然后立即选择“匕首” 。
答案 0 :(得分:1)
您正在将std::cin
与>>
运算符配合使用。该操作员读取格式化的输入(单词)而不是未格式化的输入(行)。程序无需读取"the dagger"
,而只是读取"the"
,并将"dagger"
留在输入缓冲区中供以后使用。
要读取到choice
的未格式化输入,请改用std::getline(std::cin, choice);
。