首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >整型的C++字符

整型的C++字符
EN

Stack Overflow用户
提问于 2010-03-09 17:09:31
回答 5查看 9.9K关注 0票数 9

当你将字母cin>>到整型变量时会发生什么?我试着用简单的代码将两个整数相加,先读取它们,然后再相加。但当我输入字母时,它就会失败,并在屏幕上打印成吨的数字。但是是什么导致了这个错误呢?我是说,我希望它能加载并使用那封信的ASCII码。

EN

回答 5

Stack Overflow用户

发布于 2010-03-09 17:45:15

我假设你有这样的代码:

代码语言:javascript
运行
复制
int n;
while (someCondition) {
    std::cin >> n;
    .....
    std::cout << someOutput;
}

当您输入一些无法作为整数读取的内容时,流(std::cin)将进入失败状态,并且只要您不处理输入错误,所有后续的输入尝试都会失败。

您可以测试输入操作是否成功:

代码语言:javascript
运行
复制
if (!(std::cin >> n)) //failed to read int

您可以将流恢复到良好状态,并丢弃未处理的字符(导致输入失败的输入):

代码语言:javascript
运行
复制
std::cin.clear();
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

另一种可能是接受字符串变量的输入(很少失败),并尝试将字符串转换为int。

这是输入的一个非常常见的问题,在这里和其他地方都应该有大量的线程。

票数 10
EN

Stack Overflow用户

发布于 2010-03-09 17:12:31

如果您显式地将char转换为int,它将使用ASCII代码,否则它不会自动转换为int,因此您将得到奇怪的结果。

票数 3
EN

Stack Overflow用户

发布于 2010-03-09 17:18:56

您可以使用int istream::get();

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2407771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档