【发布时间】:2014-08-01 15:40:48
【问题描述】:
我想要一段 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
这样的代码示例会是什么样子?
【问题讨论】:
-
从行中读取数据,直到到达新行,每条数据用逗号或空格分隔。这可以通过使用循环来完成,条件是“当输入不等于结束行字符时”和事件“将数据放入数组中,用逗号分隔”如果你想使用外部库作为@NetVipeC 指出你可以使用 boost。不过,创建自己的
split函数相对容易。 -
您可以read this 相关问题。总结:使用
std::getline逐行读取,boost::split通过分隔符分割行。在这种情况下,您可以用:拆分,然后再用,拆分第二个字符串。 -
从文本文件中读取数据的例子太多了,发帖前应该先搜索一下。
标签: c++ arrays file file-io fstream