关于cin对char类型多次输入的问题
typeIn为char类型,当输入一串字符,这个循环会多次输出 “请以【C】或【F】的形式输入温度单位:” ,如何在保留循环的前提下,避免多次输出?do {
std::cout << "请以【C】或【F】的形式输入温度单位: "<<std::endl;
std::cin >> typeIn;
} while (
(typeIn != 'C') && (typeIn != 'c') &&
(typeIn != 'F') && (typeIn != 'f')
);
ps.该题目为小甲鱼第五节C++快速入门例题 这个问题的原因在于,当你输入一串字符时,std::cin 会将它们逐个读取并赋值给 typeIn。
你可以通过在读取输入后清空输入缓冲区来避免多次输出。这里有一个改进后的代码示例:
#include <iostream>
#include <limits>
int main() {
char typeIn;
do {
std::cout << "请以【C】或【F】的形式输入温度单位: " << std::endl;
std::cin >> typeIn;
// 清空输入缓冲区
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
} while (
(typeIn != 'C') && (typeIn != 'c') &&
(typeIn != 'F') && (typeIn != 'f')
);
// 在此处添加计算温度转换的代码
return 0;
}
在这个示例中,我们使用 std::cin.clear() 来清除任何错误标志,并使用 std::cin.ignore() 来忽略输入缓冲区中的其余字符,
直到遇到换行符(或达到输入缓冲区的最大限制)。这样一来,循环就不会多次输出提示信息了。 isdkz 发表于 2023-4-7 16:22
这个问题的原因在于,当你输入一串字符时,std::cin 会将它们逐个读取并赋值给 typeIn。
你可以通过在读 ...
非常感谢,初学者小白受教了 isdkz 发表于 2023-4-7 15:57
这个问题的原因在于,当你输入一串字符时,std::cin 会将它们逐个读取并赋值给 typeIn。
你可以通过在读 ...
我有一个小疑问,引入的limits大致有什么功能,我在VS2022中未引用该头文件可以运行成功
页:
[1]