从文本文件中读取信息并将其正确地存储在数组中
Reading information from a text file and properly storing it in arrays, int
我想有一段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
并将它们存储在数组中等。
相关文章:
- 如何正确地将分支添加到已存在的树中
- 如何正确地将带有指针的数组传递给函数
- 如何正确地推回然后遍历堆中对象的向量?
- 我是否不正确地集中了这些字符数组?
- 如何通过另一个对象中的命令正确地从一个对象返回数据
- 我怎样才能通过友谊正确地履行我的职能?
- C++:如何正确地将 deque::front() 返回的变量从函数中传递出去?
- 我应该如何正确地将packaged_task移动到 lambda?
- 如何正确地将SHA1CryptoServiceProvider转换为c ++?
- 如何正确地对 constexpr 函数进行单元测试
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 如何正确地将boost::asio::buffers_iterator转换为InputIterator
- 如何正确地检查变量char中包含的字母
- 当试图交换可变模板类时,如何正确地重载operator=
- 如何正确地将 boost::optional<std::chrono::d uration> 作为函数参数?
- 如何在C++中正确地将我的语言字符输出到HTML文件中
- 如果我的类正确地管理了一个资源,那么拥有智能的poointer有什么意义
- 如何正确地编写这些条件,以便它们在控制台中工作
- 如何高效/正确地存储等距游戏的不同类(单个超类的所有子类型)的地图?
- 从文本文件中读取信息并将其正确地存储在数组中