c++读取CSV文件所有数据到一数组然后分类存储到别的数组里面该如何实现

假定现在有一个CSV文件,里面每一行都有不相同的数量的数据,每行开头的四位数的首位数字代表种类,4是书本,7是电影.但是排列毫无规律(有很多行)如果是电影,则每行数据是4... 假定现在有一个CSV文件,里面每一行都有不相同的数量的数据,每行开头的四位数的首位数字代表种类, 4是书本, 7 是电影. 但是排列毫无规律(有很多行)
如果是电影,则 每行数据是 4XXX 序列号 电影名 年份 导演姓 导演名 售价
如果是书本, 则 每行数据是 7XXX 序列号 书名 作者名 年份 种类代号 搜索号 售价 (X代表某数字)
例如:
1221 21321411 书名 作者名 2015 H 931 16
7123 12345678 电影名 2015 导演姓 导演名 12
……

现在想实现先读取数据, 然后用一个足够大的动态数组去存储所有数据,最后按照书本和电影分别存储到对应的数组里面

想法是用一个类来承接那个有所有数据的数组(或则不一定是数组?),然后用两个别的类去继承它然后选择性读取,但是一直无法实现。
展开
 我来答
百度网友d0ed277
推荐于2016-03-17 · TA获得超过295个赞
知道答主
回答量:73
采纳率:0%
帮助的人:51.7万
展开全部

可以用两个vector<vector<string>> 变量,一个为films,一个为books。

string line = getline(); 
split(line,' ',res);
if (res.size()==7){ films.push_back(line); }
else{ books.push_back(line); }


split 函数自己实现 

void split(std::string& s, std::string& delim,std::vector< std::string >* ret)
{
size_t last = 0;
size_t index=s.find_first_of(delim,last);
while (index!=std::string::npos)
{
ret->push_back(s.substr(last,index-last));
last=index+1;
index=s.find_first_of(delim,last);
}
if (index-last>0)
{
ret->push_back(s.substr(last,index-last));
}
}
追问
假如不能使用vector呢?有其他实现的方法吗?
而且似乎没有实现一个足够大的数组将所有数据包含
追答
先说将所有数据包含的那个数组,可以先将getline的内容存放到一个vector allArrays;中。
如果不使用vector,那就使用指针、数组、链表等,大概就是自己实现一个自己需要的vector的意思。开辟空间用malloc、realloc、new、delete等。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式