C++ 我的cin.fail()检查有时有效,但有时会出错

C++ 我的cin.fail()检查有时有效,但有时会出错,c++,cin,C++,Cin,我试图包含几行代码来检查cin输入的错误状态,它有时工作,有时给我一个错误。下面是一个运行良好的示例: int main() { //Introduces the game int intro = 0; int pronouns = 0; int confirm_pronouns = 0; while (intro != 1 || intro != 2) { do { std::cout << "The Eden Shard\n"; s

我试图包含几行代码来检查cin输入的错误状态,它有时工作,有时给我一个错误。下面是一个运行良好的示例:

int main() {

//Introduces the game

int intro = 0;
int pronouns = 0;
int confirm_pronouns = 0;

while (intro != 1 || intro != 2) {

    do {
        std::cout << "The Eden Shard\n";
        std::cout << "Press 1 to begin. Press 2 to exit.\n\n";
        std::cin >> intro;
        if (cin.fail()) {

            cin.clear();
            cin.ignore();

            std::cout << "\n\nInvalid input\n\n";
        }
    }
    while (cin.fail() == true);
intmain(){
//介绍游戏
int intro=0;
int代词=0;
int-confirm_代词=0;
while(intro!=1 | | intro!=2){
做{
std::cout-intro;
if(cin.fail()){
cin.clear();
cin.ignore();
std::cout名称;
做{

std::cout可能是因为在多次使用
cin
之前缺少
std:
的问题。如果在代码中的某个地方没有包含
使用名称空间std
或不太通用的
使用名称空间std::cin
,则
cin
必须始终带有前缀
std:
std::string assign_name() {

std::string name;
int confirm_name = 0;

do {

    std::cout << "\nWhat is your name?\n\n";
    std::cin >> name;

    do {

        std::cout << "\n\nYour name is " << name << "?\n";
        std::cout << "1. Yes\n";
        std::cout << "2. No\n\n";
        std::cin >> confirm_name;
        if (cin.fail() == true){

            cin.clear();
            cin.ignore();

            std::cout << "\n\nInvalid input\n\n";
        }

        if (confirm_name != 1 && confirm_name != 2) {

            std::cout << "\nInvalid entry\n";

        }

    }

    while (confirm_name != 1 && confirm_name != 2);
}

while (confirm_name != 1);
return name;