在不知道所需结构大小的情况下,使用结构数据结构读取.txt文件



我需要使用struct数据结构将.txt文件中的数据读取到C++中。我可以做得很好;然而,如果我不知道所需数据结构的初始大小,我该怎么办?例如,如果您有20条数据,您通常需要像"Points[20]"一样定义您的结构。那么,有没有一种方法可以将任何大小的.txt文件读取到结构数据结构中?我浏览了一下网站,但找不到任何与我相似的问题。

我认为这个问题有一些不好的假设。最好是有一个更具体的例子和一个代码尝试,以确保OP的问题得到解决。

然而,我可以回答:

  • 数据结构可以是结构、类或其聚合
  • 数据结构可以使用动态调整大小或动态调整成员
  • 为文件和文件反序列化到的数据结构制定规范是很重要的

例如:

我可以说,我将创建一个包含的文件

  • 一个前导字节,定义后面有多少个值,表示一个无符号数字0-255
  • 多个值,每个值一个字节,范围从0到255

然后我可以很容易地创建一个解析方法,将它们填充到char的std::vector或unsigned的std::vector或者其他一些动态大小容器中。

我可能会也可能不会创建一个结构来包装向量和Parse方法。

当然没有一种方法,但这里的要点是,您正在寻找动态大小的容器

在不知道文本文件结构的情况下,只能给出一个一般的答案。

CSV文件
许多文本文件被组织为列(字段(和行(记录(。列由逗号、制表符、竖线或其他分隔字符分隔。StackOverflow上有太多重复项,所以在互联网上搜索"C++读取CSV"。

HTML&XML
有些文本文件的数据组织为树状结构,包含一条又一条记录。例如HTML和XML。使用图书馆阅读这些。

在线判断
这些文本文件包含编程问题的数据。通常,它们有一行表示测试用例的数量,然后是每个测试用例的数据。数据的组织是特定于问题的。

其他
文本文件的数据可以是任意格式。您需要联系布局数据的生产者。

动态数据数量
在许多情况下,数据记录的数量在编译时是未知的。您需要一个动态大小的容器,如std::vector, std::list, std::map,

最新更新