1
int f =0;
    std::cout << " do you want to use 1. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f =='n'){
        if (f =='y'){
            this->decisionvector[0] = 1;
        }else 
            this->decisionvector[0] = 0;

    }

    std::cout << " do you want to use 2. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f=='n'){
        if (f =='y'){
            this->decisionvector[1] = 2;
        }else 
            this->decisionvector[1] = 0;
        f= 0;
    }
    std::cin.clear(); 
    std::cout << " do you want to use 3. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f =='n'){
        if (f =='y'){
            this->decisionvector[2] = 4;
        }else 
            this->decisionvector[2] = 0;
        f= 0;
    }
    std::cin.clear(); 
    std::cout << " do you want to use 4. component y or n " << std::endl;
    std::cin >>f;
    if(f == 'y' || f =='n'){
        if (f =='y'){
            this->decisionvector[3] = 8;
        }else 
            this->decisionvector[3] = 0;
        f= 0;
    }

为什么我只能在第一个 if 语句中设置 f 程序不会在其他语句处停止?

4

3 回答 3

3

你应该int f改为char f

于 2013-09-24T10:17:32.407 回答
2
int f =0;
std::cin >>f;

std::cin读取并解释字符序列。

如果f是一个int,它将使用int提取运算符的重载operator>>。此运算符将尝试将输入格式化为整数。

如果用户传递字符'y',操作员将无法将其解释为整数并存储0f. 您可以使用 来检查流的错误状态cin.fail()

如果要读取字符,则必须使用char.

于 2013-09-24T12:09:40.257 回答
0

在第二个块中,您正在阅读 k 但使用 y ...

std::cin >>k;
if(k == 'y' || k=='n'){
    if (f =='y'){
        this->decisionvector[1] = 2;
    }else 
        this->decisionvector[1] = 0;
    f= 0;
}
于 2013-09-24T10:08:47.150 回答