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

时间:2018-11-14 19:05:40

标签: c++

我需要使用结构数据结构将数据从.txt文件读取到C ++中。我可以做的很好;但是,如果我不知道所需的数据结构的初始大小,那我该怎么办? 例如,如果您有20条数据,通常需要定义“ Points [20]”之类的结构。 那么,有没有办法将任意大小的.txt文件读入struct数据结构中? 我浏览了该网站,但找不到与我类似的任何问题。

2 个答案:

答案 0 :(得分:0)

我认为这个问题有一些错误的假设。最好有一个更具体的示例,并尝试删除代码以确保解决OP的问题。

但是,我可以回答:

  • 数据结构可以是结构或类或其集合
  • 可以使用动态大小调整或动态大小调整成员来构建数据结构
  • 为文件提出一个规范以及将文件反序列化为该文件的数据结构很重要

例如:

我可以说我将创建一个包含以下内容的文件

  • 用于定义将跟随多少个值的前导字节,代表无符号数字0-255
  • 多个值,每个一个字节,范围从0-255

然后,我可以轻松创建一个解析方法,将它们填充到char的std :: vector或无符号的std :: vector或其他动态大小调整容器中。

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

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

答案 1 :(得分:0)

如果不知道文本文件的结构,只能给出一般的答案。

CSV文件
许多文本文件被组织为列(字段)和行(记录)。这些列由逗号,制表符,竖线或其他分隔的字符分隔。 StackOverflow上的重复项太多,因此请在Internet上搜索“ C ++读取CSV”。

HTML和XML
一些文本文件具有像树结构一样的组织数据,并带有记录记录。示例是HTML和XML。使用库来阅读这些内容。

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

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

动态数据量
在许多情况下,编译时不知道数据记录的数量。您需要一个动态尺寸的容器,例如std::vector, std::list, std::map,等。