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

时间:2018-01-18 03:33:44

标签: c++ database text include

我有一个逗号分隔的文本文件,有几百万个条目。每23个条目后有一个换行符。我将每个完整行添加为向量的实例,其中23个字段作为子向量的实例。所以,第一个例子是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解析解决方案。

1 个答案:

答案 0 :(得分:1)

您可能希望编写一个脚本,将每个数据文件的每一行转换为记录结构的初始化程序,并在每个lins之后使用尾随逗号[如果您不想使用终结符条目(请参阅下文))比最后一行除外]。此脚本可能是您特定的数据类型。说,

12,Joe ,,, YES - > MyType的(12,"乔",0,0,真),

然后#include整个转换后的文件代替数据数组/向量元素初始值设定项,对于前

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

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