- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我目前正在尝试将代码从使用 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 是一个文件*。我现在尝试转换代码如下:
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++ 版本中总是会抛出一个错误。所以我没有正确的 ferror 类比。谁能帮我解决这个问题?
塞巴斯蒂安
最佳答案
当您尝试读取某些内容但已到达文件末尾时,将始终设置 failbit。如果您尝试读取某些内容但尚未到达文件末尾,但文件中的数据无法转换为目标类型(例如,您尝试读取 int
,但文件包含“K”)。
关于c++ - 模拟 istringstream 的 ferror(FILE *)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5887845/
::ferror(FILE *) 的行为是什么?和 std::ferror(FILE *)何时传递无效指针? C++ 标准仅指 C(参见 draft)。但是在 C 标准中没有提及 ferror关于无效
此示例中的 ferror 检查是检查两个 fprintf 是否有错误,还是只检查第二个? FILE * myout; if ((myout = fopen("Assignment 11.txt", "
我正在尝试生成多个线程,并为每个线程写入不同的文件(线程 1 写入文件 1,等等)。但是,在设置线程执行 ferror() 后,阻止我在主进程中执行进一步的文件操作。我尝试清除错误,但没有解决。这是我
如何获取 int ferror(FILE*) 返回的错误代码消息?对于 errno,有 char * strerror(int)。 ferror 返回的代码是什么?如果 char * strerror
一些从流中读取和写入的操作可能会在流中设置错误标志,可以使用 ferror(stream) 进行测试,而我很确定这一定是一个常见问题,我无法在 SO 或一般网络中找到所有可能的错误原因列表。什么会导致
哪些事件会导致 ferror() 返回非零值?在哪些事件发生后应该检查 ferror()? http://www.cplusplus.com/reference/cstdio/ferror/ 打开、阅
为什么下面的代码会出现段错误? #include #include int main() { FILE *file; file = fopen("text","r"); i
在标准 C 中,您如何可靠地检查写入标准 I/O 流的所有输出是否已成功保存到磁盘? C 标准规定 fclose成功时将返回 0,如果“检测到任何错误”,则返回 EOF。 但这是否意味着“在 fclo
我目前正在尝试将代码从使用 C 风格的 FILE* 解析文件移植到 C++ 风格的 istringstream。我的程序并行运行,我想 1) 仅在第一个 CPU 上读取文件,2) 将字符串形式的内容广
我有一个 iOS 项目,它使用了一些在编译时抛出大量警告的 CocoaPods。 在我的 Podfile 中,我有 inhibit_all_warnings! 防止警告出现在 Xcode build
我正在尝试检查 fread() 何时引发错误,因此我使用 ferror()。 chunk = fread(buf, 1, 100, file); if (ferror(file)) { r
所以我正在阅读一本关于用 C 编写 shell 的书,我想尝试用 C++ 编写它。我遇到了以下代码: for( ; ; ) { if (fputs(PROMPT, stdout) == EOF
我使用 cstdio 在 linux 上编写了一个 C++ 应用程序。它包含一个函数,该函数应该用随机数据覆盖整个设备。它被赋予一个文件名,在内存中创建随机数据 block ,并使用 fwrite()
一个简单的问题,我对答案有 99.99% 的把握,但寻求一些反馈,以便我对自己的理解有 100% 的信心。当fputc返回 EOF它只是在流错误正确吗?例如,假设我有一个非常小的空间要写入,并且已
我一直在学习如何制作我自己的 shell 的教程,但我已经被困了几天了。 两件事: 这段代码编译运行时,会随机出现段错误,我也想不通原因。 if 语句 `if (ferror != 0)` 似乎总是正
这个问题在这里已经有了答案: Is it possible to distinguish the error returned by fgets (2 个答案) 关闭 2 年前。 我写了这个 min
我是一名优秀的程序员,十分优秀!