1
A
回答
2
注意这一点。
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
虽然更安全。
相关问题
- 1. 忽略/清除用户输入的额外整数
- 2. 用户输入忽略大小写
- 3. 忽略除整数以外的所有内容scanf
- 4. Git忽略除子文件夹以外的所有内容
- 5. 忽略除了某些子目录及其内容以外的所有内容
- 6. MPMoviePlayerController忽略输入
- 7. 使用svn:忽略忽略某些文件的所有内容
- 8. 忽略的内容用美丽的汤
- 9. '#'后忽略所有内容
- 10. 验证用户输入的内容
- 11. 如何忽略来自用户通过URL输入的输入使用php
- 12. 控制台忽略输入
- 13. 只忽略输入样式?
- 14. 忽略输入字符
- 15. 循环'忽略'输入?
- 16. 忽略字符串输入
- 17. QComboBox忽略键盘输入
- 18. 忽略键盘输入
- 19. 忽略空或输入批
- 20. SVN忽略 - 如何忽略目录的内容
- 21. 忽略不正确的用户输入,直到收到正确的输入
- 22. 忽略用户的输入,而其他计算正在发生
- 23. C如何忽略用户输入中的空行?
- 24. 如何在线程中忽略Python上的用户输入?
- 25. 使.git-ftp-ignore忽略除几个文件/目录以外的所有内容
- 26. 如何让Git忽略除子目录以外的所有内容?
- 27. 使.gitignore忽略除了一个文件以外的所有内容
- 28. 忽略例外
- 29. 忽略文本的标头内容
- 30. 如何忽略内容中的逗号..?
嗯,什么编程语言? – 2011-02-12 01:33:17
对不起,我把那部分拿出来了。 C++是语言。 – Joshua 2011-02-12 01:37:01