c++ - Istream 失败。什么是安全的使用方法!

标签 c++ iostream

所以我想知道如果我有以下代码会发生什么

int i;
cin>> i;

但我实际上输入了 "abc" 而不是整数。它失败?有什么方法可以确保从命令行读取不会失败?

最佳答案

流的失败位将被设置,在该位被清除之前,进一步的操作将不执行任何操作。您可以阅读有关流位的更多信息 here .

如果您不希望它失败,只需检查该位即可:

int i;
std::cin >> i;

if (!std::cin)
{
    // didn't read correctly, handle it
}

或者一口气:

int i;

if (!(std::cin >> i))
{
    // didn't read correctly, handle it
}

可能有更强大的收集输入的方法,但您想要什么取决于您的情况。

关于c++ - Istream 失败。什么是安全的使用方法!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5481536/

相关文章:

c++ - 用 boost spirit 解析转义的字符串

c++ - 如何在opencv cpp中获取霍夫变换矩阵,霍夫变换的theta和rho值

c++ - 控制台输出 - 随机数出现

c++ - 包含 iostream 会导致不同的二进制文件

c++ - 为什么 cin 在包含字符串头后接受字符串输入

c++ - 计算字符串中元音的函数

c++ - 使用部分模板特化来选择基类

c++ - 如何轻松使 std::cout 线程安全?

C++ 复合模板类工厂

c++ - 未格式化/格式化输入