所以我想知道如果我有以下代码会发生什么
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/