【问题标题】:Extract file content with ifstream使用 ifstream 提取文件内容
【发布时间】:2015-11-09 02:29:23
【问题描述】:

这里是我想要达到的目标的一些描述:

我有一个文本文件,我必须从中提取数据。此数据代表 8 个人的基本信息,对于每个人,文本文件中使用 6 行信息:

例如: 第 1 行:姓名,第 2 行:姓氏,..... 第 7 行:姓名,第 8 行:姓氏等...

在所有这些信息之后,还有更多以不同方式格式化的数据。

数据的第二部分除以字符'$'。

我成功提取了该人的所有数据,但是如何更改提取文本文件数据第二部分的方式?我想我可以更改评论所在的提取方法(见代码)

这是我提取第一部分数据的代码:

if (inputFile.is_open()) {
        for (int i = 0; i < 8; i++) {
            string name, last_name, dob, number, street, city;
            getline(inputFile, name);
            getline(inputFile, last_name);
            getline(inputFile, dob);
            getline(inputFile, number);
            getline(inputFile, street);
            getline(inputFile, city);
            Person p = Person(name, last_name, atoi(dob.c_str()));
            Address a = Address(atoi(number.c_str()), street, city);
            Directory::register(p, a);
        }
        //Code for 2nd part of data should be here no?
} else {
    throw logic_error("File can't be opened");
}

【问题讨论】:

  • 有没有什么方法可以让你知道你已经从第一部分的末尾进入了第二部分?如果是这样,为什么不将其用作拆分运营的一种方式?
  • 什么不起作用?我不明白。如果 for 循环运行良好,那么下一个 getline() 将读取 $,因此您可以跳过它并按照您需要的方式开始读取数据的第二部分。
  • 这正是我的想法并且我已经尝试过,但似乎由于未知原因它无法正常工作。第二部分的数据由字符'$'分隔

标签: c++ ifstream getline


【解决方案1】:

我设法使用另一个 for 循环使其工作,并忽略每个数据集的字符 inputFile.ignore('$', '\n');

感谢大家的帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2018-08-11
    • 1970-01-01
    相关资源
    最近更新 更多