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

时间:2014-08-01 15:40:49

标签: c++ arrays file file-io fstream

我想要一段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

所以主要的问题是程序在阅读时跳到下一行,忽略“关键字”,如“名称:”,“ID”......同时准备好读取那里的条目数量即使没有预先确定的数量,也会排成一行。

刚刚阅读的信息最好保存为:

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

这样的代码示例如何?

1 个答案:

答案 0 :(得分:1)

我的回答是不完整的,但这里概述了我将如何解决这个问题:

当您使用ifstream时,您可以使用名为getline的函数立即抓取整行,并将其存储在char数组中。

然后您可以使用strtok之类的函数来分割该行,因为我注意到数据来自:个字符。

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