c++读取CSV文件所有数据到一数组然后分类存储到别的数组里面该如何实现
假定现在有一个CSV文件,里面每一行都有不相同的数量的数据,每行开头的四位数的首位数字代表种类,4是书本,7是电影.但是排列毫无规律(有很多行)如果是电影,则每行数据是4...
假定现在有一个CSV文件,里面每一行都有不相同的数量的数据,每行开头的四位数的首位数字代表种类, 4是书本, 7 是电影. 但是排列毫无规律(有很多行)
如果是电影,则 每行数据是 4XXX 序列号 电影名 年份 导演姓 导演名 售价
如果是书本, 则 每行数据是 7XXX 序列号 书名 作者名 年份 种类代号 搜索号 售价 (X代表某数字)
例如:
1221 21321411 书名 作者名 2015 H 931 16
7123 12345678 电影名 2015 导演姓 导演名 12
……
现在想实现先读取数据, 然后用一个足够大的动态数组去存储所有数据,最后按照书本和电影分别存储到对应的数组里面
想法是用一个类来承接那个有所有数据的数组(或则不一定是数组?),然后用两个别的类去继承它然后选择性读取,但是一直无法实现。 展开
如果是电影,则 每行数据是 4XXX 序列号 电影名 年份 导演姓 导演名 售价
如果是书本, 则 每行数据是 7XXX 序列号 书名 作者名 年份 种类代号 搜索号 售价 (X代表某数字)
例如:
1221 21321411 书名 作者名 2015 H 931 16
7123 12345678 电影名 2015 导演姓 导演名 12
……
现在想实现先读取数据, 然后用一个足够大的动态数组去存储所有数据,最后按照书本和电影分别存储到对应的数组里面
想法是用一个类来承接那个有所有数据的数组(或则不一定是数组?),然后用两个别的类去继承它然后选择性读取,但是一直无法实现。 展开
1个回答
展开全部
可以用两个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等。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询