从文本文件中读取信息并将其正确地存储在数组中

Reading information from a text file and properly storing it in arrays, int

本文关键字:正确地 存储 数组 文本 文件 读取 信息      更新时间:2023-10-16

我想有一段c++代码,从文本文件中读取并保存信息在一些变量,数组…

例如,假设我们有一个文件Numbers.txt,其中包含4个整数。到目前为止,我找到的一个示例代码(并没有为我做到这一点)看起来像这样:

string weight, height, width, depth;
ifstream MyFile("Numbers.txt");
MyFile >> weight;
MyFile >> height;
MyFile >> width;
MyFile >> depth;

但是它只读取由空格分隔的单个数据块。

我想代码能够读取几块数据,可以在同一行。为了澄清,这是一个文本文件格式的示例…

FileName
ProjectName
Names
IDs

和一个文本文件的实际内容示例…

// SomeData.txt 
FileName: SomeData.txt
ProjectName: Second Attempt // should be able to read with spaces too, and save in a string as "Second Attempt" 
Names: John, Frank, Mike // I guess it could be without commas too
IDs: 42, 505, 1591, 4358, 12, 743

因此,主要问题是程序在阅读时跳过下一行,并忽略"关键字",如"Names:","id"…与此同时,要准备好读取一行中尽可能多的条目,即使事先没有关于有多少条目的信息。

刚刚读取的信息最好这样保存:

FileName -> string
ProjectName -> string
Names -> array of strings
IDs -> array of integers

这样的代码示例是怎样的呢?

我的回答是不完整的,但这里有一个概述,我将如何做到这一点:

当你使用ifstream时,你可以使用一个叫做getline的函数一次抓取整行,并将其存储在char数组中。

然后,您可以使用strtok之类的函数将该行分开,因为我注意到数据出现在:字符之后。

此时,您可以根据:之前的字符串使用switch语句,并适当地处理您的数据。例如,如果你有IDs,那么使用atoi将它们转换为ints并将它们存储在数组中等。