C++ 使用ifstream提取文件内容
以下是我试图实现的目标的一点描述: 我有一个文本文件,我必须从中提取数据。此数据表示8人的基本信息,每个人在文本文件中使用6行信息: 例: 第1行:姓名,第2行:姓氏。。。。。第七行:姓名,第八行:姓氏等 在所有这些信息之后,会有更多以不同方式格式化的数据。 数据的第二部分被字符“$”分割 我成功地提取了该人的所有数据,但是如何更改提取文本文件第二部分数据的方式?我认为可以更改注释所在的提取方法(参见代码) 以下是我提取第一部分数据的代码:C++ 使用ifstream提取文件内容,c++,ifstream,getline,C++,Ifstream,Getline,以下是我试图实现的目标的一点描述: 我有一个文本文件,我必须从中提取数据。此数据表示8人的基本信息,每个人在文本文件中使用6行信息: 例: 第1行:姓名,第2行:姓氏。。。。。第七行:姓名,第八行:姓氏等 在所有这些信息之后,会有更多以不同方式格式化的数据。 数据的第二部分被字符“$”分割 我成功地提取了该人的所有数据,但是如何更改提取文本文件第二部分数据的方式?我认为可以更改注释所在的提取方法(参见代码) 以下是我提取第一部分数据的代码: if (inputFile.is_open()) {
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()将读取$
,因此您可以跳过它,按照您需要的方式开始读取数据的第二部分。这正是我所想的,我也尝试过,但似乎出于未知的原因它无法工作。第二部分中的数据由字符“$”分隔