c++读取csv文件到vector的类中

我有如下csv数据
20130104,91501000,2564.6,456,2563.6,8,2563.8,1
20130104,91501500,2563.2,166,2562.6,32,2563.2,36
20130104,91502000,2562.4,232,2562,20,2562.4,23
.....共若干行,8列

希望用c++读取文件放在内存中成为vector<shuju>这种结构体
class shuju{
int a;
int b;
double c;
int d;
double e;
int f;
double g;
int i;

} A;

调用的时候用A[1].a就能找到第一行第一列的数据
请问应该怎样实现这些功能?

要是做出来,你一定要采纳,我就开工

 

你上面是用class  应该使用struct吧

 

#include<iostream>
#include<vector>
using namespace std;
typedef struct shuju{
int a;
int b;
double c;
int d;
double e;
int f;
double g;
int i;
}shuju;
void main()
{
 vector<shuju> A;
 shuju B;
    FILE*fp=fopen("f:/test.txt","r");
 while(!feof(fp))
 {
  fscanf(fp,"%d,%d,%lf,%d,%lf,%d,%lf,%d\n",&B.a,&B.b,&B.c,&B.d,&B.e,&B.f,&B.g,&B.i);
     A.push_back(B);
 }
 for(int i=0;i<A.size();i++)
 printf("%d,%d,%lf,%d,%lf,%d,%lf,%d\n",A[i].a,A[i].b,A[i].c,A[i].d,A[i].e,A[i].f,A[i].g,A[i].i);
}

 

追问

十分感谢你的回答,不过还有两个问题。1.我要读取的文件是csv文件,并非txt文件。2.我按你写的代码编译了一下读取如你所示的txt文件,依然无法通过编译,提示
“ConsoleApplication2.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。
还有很多类似的提示,这里超出最大字符了,再次感谢你的回答!

追答

改为 .csv 就可以运行,我用txt只是为了,好看,你工程是不是建错了? 你以前运行过c++程序吗

追问

我用的是vs2012,新建的win32控制台程序

追答

你先运行一个hello world再说,代码没问题,你的工程没建好

追问

hello world没问题fopen': This function or variable may be unsafe. Consider using fopen_s instead.应该用fopen_s吧

追答

你就改为fopen_s了,vs2012我没用过

追问

fopen_s提示不接受2个参数...可以用ifstream导入文件吗

温馨提示:答案为网友推荐,仅供参考
相似回答