C++ 仅读取输入文件中的部分(不是全部)数据以添加到记录中

C++ Read in some (not all) only data from an input file to add to a record

本文关键字:数据 全部 记录 添加 输入 读取 文件 C++      更新时间:2023-10-16

>我目前有一个CSV文件,其中包含这样的数据:

名字。。。毛。。。蛋。。。高。。。水。。。土地。。。国内

应用。

1.........0........1.......0....0....0.............1大坝。。。。。1.........1.......0..0.....1.......1

亿万。。。。。。0.........

1..0..1....1....1.......0其中 0 为假,1 为真。我只对阅读对象名称,高和国内感兴趣,我将添加到记录中。到目前为止,我有

ifstream inFile("file_name.csv");
if (inFile.fail())
{
std::cout << "File cannot be opened due to an error." << endl;
exit(1);
}
string junk;
getline(inFile,junk);

我正在绘制一个空白,了解如何设置 while 循环以跳过不必要的数据。只是没有意义,而(inFile>>名称>>头发>>鸡蛋>>高>>水>>土地>>家(我在 while 循环中思考一个 for 循环,但我就是无法在脑海中解决它。任何帮助/指导将不胜感激。

附上表图片

在这些情况下,我建议您使用类或结构对每一行进行建模:

struct Record
{
std::string name;
int hair;
int eggs;
int tall;
int water;
int land;
int domestic;
friend std::istream& operator>>(std::istream& input, Record& r);
};
std::istream& operator>>(std::istream& input, Record& r)
{
input >> name;
input >> hair;
/...
input >> domestic;
return input;
}

通过重载operator>>您可以简化输入:

std::vector<Record>  database;
Record r;
while (data_file >> r)
{
database.push_back(r);
}

要访问Name字段:

std::cout << database[3].name << "n";