类似于istringstream的error(FILE *)
Analogon to ferror(FILE *) for a istringstream?
我目前正在尝试将代码从使用C风格的file *解析文件移植到c++风格的istringstream。我的程序是并行运行的,我想1)只在第一个CPU上读取文件,2)以字符串形式广播内容到所有其他CPU, 3)让每个CPU解析字符串。
旧版本的解析器基本上做了以下工作:
while (!done) {
int c = fgetc(infile);
if (EOF == c) {
if (ferror(infile)) {
// throw some error
}
return;
}
// continue parsing
}
infile是一个FILE*。我现在尝试转换代码如下:
while (!done) {
char cchar = iss.get(); int c = int(cchar);
if (EOF == c) {
if ((iss.rdstate() & ifstream::failbit ) != 0 ) {
// throw some error
}
return;
}
// continue parsing
}
iss是一个istringstream。问题是,当达到EOF时,当前c++版本中抛出的错误是总是。所以我没有正确的类比来形容恐惧。有人能帮我吗?
塞巴斯蒂安当您尝试读取某些内容但已到达文件末尾时,将始终设置failbit。如果您尝试读取某些内容,并且尚未到达文件的末尾,但文件中的数据无法转换为目标类型(例如,您尝试读取int
,但文件包含"K"),则也将设置。
如果流已经失败,并且您可能正在等待EOF,那么只需测试它:
// read stuff here
if ( iss.eof() ) {
// failed, but eof is ok
}
else {
// a real error
}
eof位只在文件结束时设置,而不是其他问题。
相关文章:
- 已解决 - C++ 的崇高文本中的"fatal error: opencv: no such file or directory"
- Visual Studio "fatal error LNK1104: cannot open file"未使用或包含的库
- QtCreator 中的"Fatal Error C1083: Cannot open include file"
- 如何在安装了 WSL 的 Visual Studio Code 中修复"g++: error: helloworld.cpp: No such file or directory"?
- 尝试使用生成文件编译程序时"fatal error: boost/regex.hpp: No such file or directory" C++
- 如何修复OSX中的"fatal error: 'sys/epoll.h' file not found"?
- 升级到Xcode 10.1后如何修复"fatal error: 'iostream' file not found"
- 如何修复"fatal error: boost/asio.hpp: no such file or directory"?
- VS 远程建筑:"Makefile.Targets error: Cannot copy file remotely to directory"
- C++运行时组件(通用 Windows)项目生成错误"LINK : fatal error LNK1104: cannot open file 'LIBCMT.lib'"
- "Fatal error C1083: Cannot open include file"但我已将目录添加到项目中
- 如何在没有"fatal error: Wt/WApplication: No such file or directory"的情况下将wt安装到自定义文件夹中
- OpenCV 错误:"LINK : fatal error LNK1104: cannot open file 'opencv_core231d.lib' "
- GMOCK 叮当讨厌的错误"/usr/include/limits.h:123:16: fatal error: 'limits.h' file not found"
- "fatal error: Eigen/Dense: No such file or directory" // 本征库
- "Error C1083: Cannot open include file"但我有包含文件的路径
- 如何摆脱VS 13中的错误" LINK : fatal error LNK1104: cannot open file 'LIBC.lib' "?
- "Error Opening SDF File"适用于VS2015中的任何和所有C++项目
- 编译错误:"g++: error trying to exec 'cc1plus': execvp: No such file or directory"
- 谷歌模拟的EXPECT_CALL导致"unknown file:error: SEH exception with code 0xc0000005 thrown in the test body"