C++ 使用ifstream提取文件内容

C++ 使用ifstream提取文件内容,c++,ifstream,getline,C++,Ifstream,Getline,以下是我试图实现的目标的一点描述: 我有一个文本文件,我必须从中提取数据。此数据表示8人的基本信息,每个人在文本文件中使用6行信息: 例: 第1行:姓名,第2行:姓氏。。。。。第七行:姓名,第八行:姓氏等 在所有这些信息之后,会有更多以不同方式格式化的数据。 数据的第二部分被字符“$”分割 我成功地提取了该人的所有数据,但是如何更改提取文本文件第二部分数据的方式?我认为可以更改注释所在的提取方法(参见代码) 以下是我提取第一部分数据的代码: if (inputFile.is_open()) {

以下是我试图实现的目标的一点描述:

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

例: 第1行:姓名,第2行:姓氏。。。。。第七行:姓名,第八行:姓氏等

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

数据的第二部分被字符“$”分割

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

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

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");
}
if(inputFile.is\u open()){
对于(int i=0;i<8;i++){
字符串名称、姓氏、出生日期、编号、街道、城市;
getline(输入文件,名称);
getline(输入文件,姓氏);
getline(输入文件,dob);
getline(输入文件,编号);
getline(输入文件,街道);
getline(输入文件,城市);
Person p=Person(姓名、姓氏、atoi(dob.c_str());
地址a=地址(atoi(number.c_str()),城市街道);
目录::寄存器(p,a);
}
//第二部分数据的代码应在此处否?
}否则{
抛出逻辑_错误(“文件无法打开”);
}

我使用另一个for循环并忽略每个数据集的字符
inputFile.ignore(“$”,“\n”)


谢谢大家的帮助

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