我有一个包含单词和整数的文本文件。任务是从中读取忽略整数的整数。这是此类文件的示例:
seven 7
我声明一个int变量,然后尝试将ifstream读入其中(呼应ifstream的状态):
#include <iostream>
#include <fstream>
int main() {
int num = -1;
std::ifstream ifs("file.in");
std::cout << ifs << std::endl;
ifs >> num;
std::cout << ifs << std::endl;
if ( ifs.fail() )
ifs.clear();
std::cout << ifs << std::endl;
ifs >> num;
std::cout << ifs << std::endl;
std::cout << num << std::endl;
return 0;
}
我得到的输出:
1
0
1
0
-1
显然,当尝试将单词读入int变量时,“ ifs”失败。我的问题是,为什么清除后第二次失败?
第一次失败不会提高流的位置,因此第二次尝试再次尝试时会获得完全相同的结果。您需要跳过不需要的单词,将其读入字符串或使用ignore
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句