【问题标题】:Reading from a file data formatted in different ways. C++从以不同方式格式化的文件数据中读取。 C++
【发布时间】:2012-05-03 10:52:21
【问题描述】:

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

文本文件:

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    您可以使用ios::bad()ios::fail()ios::eof() 来确定提取失败的原因,以便您采取相应措施。

    【讨论】:

    • 哦,天哪。这就是我所有的问题?现在一切正常,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多