【发布时间】:2017-04-22 04:01:06
【问题描述】:
在我的代码中,我尝试创建一个循环,但每隔一段时间,整个循环在获得我的输入后都会被忽略。
这是循环:
while(std::cin >> word){
std::cin.clear();
qType = (rand()%2) + 1;
letter = (rand()%26) + 1;
if(qType == 1){
std::cout << letter << std::endl;
}else if(qType == 2){
std::cout << Letters[letter] << std::endl;
}
}
当我写我的输入时,循环的前几次成功输出了一个字母或其对应的数字,但不久之后,它就停止了。我发现有类似问题的人,但对他们来说,解决方案是添加一个 cin.clear();函数,我先添加到末尾,然后添加到开头,但它并没有解决问题。
【问题讨论】:
-
word的类型是什么? -
Letters是什么?你不需要一个数组来获取字母。只需使用'a' + letter或'A' + letter -
@LưuVĩnhPhúc -- 该代码不可移植。字符代码不需要是连续的,并且有些编码不是连续的(EBCDIC 是主要示例)。这种方法适用于数字
0到9,因为它们需要连续且递增。对于字母,通过数组进行转换是正确的做法。
标签: c++