c++ - 从以不同方式格式化的文件数据中读取。 C++

标签 c++ input io file-io formatted-input

我有一个文本文件,其中存储了一些数据。有几个数据 block 以不同的方式格式化,所以我需要我的程序能够判断一个 block 何时结束,另一个 block 何时开始。这是一个非常简单的示例。

文本文件:

a 1
b 2
c 3

qwerty
asdfgh
xcvbnm

我的程序:

int x;
char a;
string line;

while(ifs >> a >> x)
    cout << a << " " << x << "\n";

cout<<"\n" << "next block of data" << "\n";

while(ifs >> line)
    cout << line;

但是它不会读取下半部分。我认为用 >> 格式化阅读只是丢弃空格,所以我认为在第一个 while() 失败后,第二个 while() 应该开始阅读下半部分。这是我的输出:

a 1
b 2
c 3

next block of data

此外,如果有人可以推荐一些关于此的内容,我将不胜感激。我搜索了几本书和互联网,但找不到任何关于 >> 运算符如何工作的明确手册。

最佳答案

operator>> 失败时,将设置失败位,并且所有后续提取也将失败,除非您清除错误标志。使用 ios::clear()

while(ifs >> a >> x)
    cout << a << " " << x << "\n";

ifs.clear();

您可以使用 ios::bad()ios::fail()ios::eof() 来确定原因提取失败,请自行处理。

关于c++ - 从以不同方式格式化的文件数据中读取。 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10270183/

相关文章:

c++ - 使用 boost::bind 输出作为数组下标

c++ - 如何以编程方式确定 Windows 可执行文件 DLL 依赖项?

javascript - 如何将范围输入中的值用于 AngularJS 的 if 语句?

swift - 使用返回 double 值的用户输入访问字典

c++ - char& operator[] 重载引用返回? (链表)

c++ - 在与声明不同的文件中定义内联运算符

html - 输入框填充适合 div 跨浏览器

java - 写 "compressed"数组提高IO性能?

powershell - 通过 PowerShell 将 Write-Host 和 Write-Output 输出到控制台的不同输出

c - 如何将输入发送到 C 中的进程?