gpt4 book ai didi

c++ - 忽略要从中选择的内容之外的用户输入

转载 作者:行者123 更新时间:2023-11-30 04:35:46 24 4
gpt4 key购买 nike

我有一个程序,用户必须在其中输入数字 1-5 进行选择。我将如何处理他们输入超出这些界限的数字甚至字符可能引起的任何错误?

编辑:对不起,我忘了说这是用 C++ 编写的

最佳答案

注意这一点。如果用户输入字母,以下将产生无限循环:

int main(int argc, char* argv[])
{
int i=0;
do {
std::cout << "Input a number, 1-5: ";
std::cin >> i;
} while (i <1 || i > 5);
return 0;
}

问题是 std::cin >> i不会从输入流中删除任何内容,除非它是一个数字。因此,当它循环并第二次调用 std::cin>>i 时,它会读取与之前相同的内容,并且永远不会让用户有机会输入任何有用的内容。

所以更安全的做法是先读取字符串,然后检查数字输入:

int main(int argc, char* argv[])
{
int i=0;
std::string s;
do {
std::cout << "Input a number, 1-5: ";
std::cin >> s;
i = atoi(s.c_str());
} while (i <1 || i > 5);
return 0;
}

虽然你可能想要使用比 atoi 更安全的东西。

关于c++ - 忽略要从中选择的内容之外的用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4975711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com