c++ - 在 C++ 程序中包含大量文本文件

标签 c++ database text include

我有一个逗号分隔的文本文件,其中包含几百万个条目。每 23 个条目后有一个换行符。我将添加每条完整的行作为一个 vector 的实例,将 23 个字段作为一个子 vector 的实例。因此,第一个实例将是 vec[0][0-22],然后是 vec[1][0-22],等等。

这个文件是我程序的一部分,需要用它来编译。意思是,我不想额外提供文件并使用 ifstream 从单独的文件中读取数据。

我已经可以使用 ifstream 对数据进行排序,但现在我需要将原始数据集成到程序中,以便我可以将它们一起编译。

我无法将这个以逗号分隔的大文本文件变成一个长字符串,然后将其分成多个字段,因为有些字段中有引号,引号之间也有逗号。

例子:

  `19891656,PLANTAE,TRACHEOPHYTA,MAGNOLIOPSIDA,FABALES,FABACEAE,Zygia,ampla,(Benth.) Pittier,,,,,Pithecellobium amplum  |Pithecolobium brevispicatum  ,Jarendeua de Sapo,,,LC,,3.1,2012,stable,N
   19891919,PLANTAE,TRACHEOPHYTA,MAGNOLIOPSIDA,FABALES,FABACEAE,Zygia,biflora,L.Rico,,,,,,,,,VU,B2ab(iii),3.1,2012,stable,N
   2060,ANIMALIA,CHORDATA,MAMMALIA,CARNIVORA,OTARIIDAE,Arctocephalus,pusillus,"(Schreber, 1775)",,,,,Phoca pusilla,"Afro-Australian Fur Seal, Australian Fur Seal, Brown Fur Seal, Cape Fur Seal, South African Fur Seal",Arctocphale d'Afrique du Sud,,LC,,3.1,2015,increasing,N`

当我的程序运行时,它将从大量文本中获取数据,并且不需要使用带有外部文件路径的 ifstream。我怎样才能在我的程序中包含这个文本文件?有没有办法“包含”文本文件?如果我需要制作大量的字符串数组,我该如何使用引号之间带有逗号的引号字段来做到这一点?我很乐意澄清这个问题中看似模糊的任何部分,因为我真的很好奇我如何才能做到这一点。

从技术上讲,这个文本文件是一个 csv,但我对将 csv 作为标签包含在内犹豫不决,因为我认为人们会认为我正在寻找 csv 解析解决方案。

最佳答案

您可能想要编写一个脚本,将数据文件的每一行转换为记录结构的初始值设定项,并且在每个 lins 之后带有尾随逗号 [如果您不想使用终止符条目(见下文)而不是 except最后一行]。该脚本可能特定于您的数据类型。说,

12,乔,,,是 -> MyType(12,"乔",0,0,true),

然后 #include 整个转换后的文件来代替你的数据数组/vector 元素初始值设定项,例如

MyType myData [] = 
{
#include "my_data_file_converted"
   MyType() //an optional terminal entry
};

当然 MyType 应该有构造函数接受您的初始化序列。

关于c++ - 在 C++ 程序中包含大量文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48313414/

相关文章:

mysql - MySQL通配符授予权限的区别

iPhone:绘制旋转文本?

c++ - 编译时重定义错误

c++ - 将 void * 转换为类型的shared_ptr

c++ - gluProject 的文档是否缺少透视除法?

database - 最大基数和最小基数有什么区别?

c++ - MFC 中的切换按钮

database - 缺少 : Outlook 16. 0 对象库 (msoutl.olb)

css - 将文本对齐到与中间对齐的图像的左侧

javascript - jQuery:仅返回文本的一部分