防止错误输入
我使用数字( int、float、double、long、unsigned ),但是当我将其他字符放入控制台时(例如 ^[[A
或 *
)。因此,我的程序崩溃了,
如何保护我的程序免受这种错误输入的影响?
注意:我知道一些库函数,即 isdigit
或 isallnum
,但它们没有太大帮助
I worked with numbers ( int, float, double, long, unsigned ), but when I put other character to console ( such as ^[[A
, or *
). Therefore, my program is crashing
How can I protect my program from this erroneous input ?
Note : I know some library function namely isdigit
or isallnum
, but they don't help so much
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
在 C 和 C++ 中执行此操作的方法是将所有输入读取为字符串,然后解析该字符串。
这就是为什么除了调试/学生/业余爱好者程序之外,您不应该将 scanf("%d") 或 cin>>integer 用于任何其他目的的原因之一。
The way to do this in C as well as C++, is to read all inputs as strings, then parse the string.
This is one reason why you should never use scanf("%d") or cin>>integer for any other purposes than debugging / student / hobbyist programs.
在 C++ 中,可以通过字符串流过滤数据来做到这一点。 在斯坦福大学的 C++ 入门课程网站上讨论了如何做到这一点,第 19 页上有读取整数的完整代码。本章的其余部分对于如何在 C++ 中执行 I/O 也是一个很好的资源,这也可能很有用。
In C++ it's possible to do this by filtering the data through a stringstream. There's a discussion of how to do this at Stanford's introductory C++ course site, with full code for reading integers on page 19. The rest of the chapter is also a good resource in general for how to do I/O in C++, which might also be useful.