使用StreamReader打开
文件,利用ReadLine方法可以一行一行的读取CSV文件内容,使用ReadToEnd方法可以一次读取全部CSV文件内容,你可以一行一行的读取出字符串,然后使用Split方法把内容根据“,”分割成
数组,代码如下:\x0d\x0aStreamReader reader = new StreamReader("文件完整路径或相对路径,包含文件名")\x0d\x0astring line = ""\x0d\x0aList listStrArr = new List()//数组List,相当于可以无限扩大的二维数组。\x0d\x0aline = reader.ReadLine()//读取一行数据\x0d\x0awhile(line != null)\x0d\x0a{\x0d\x0alistStrArr.Add(line.Split(","))//将文件内容分割
成数组\x0d\x0a\x0d\x0aline = reader.ReadLine()\x0d\x0a\x0d\x0a}c井号csv文件的读写速度快。根据查询相关公开信息显示,c井号csv文件是只要读不要文件处理,几千万行仅需10分钟,相对于其他的转换格式快了几十倍,读写速度很快。csv是逗号分隔值文件格式,可以用电脑自带的记事本或excel打开,csv其文件以纯文本形式存储表格数据。
csv文件,实际上就是逗号分隔的纯文本文件,在VC++中,通过文本文件的形式就可以正常读取和写入csv文件。
具体的说,你这个是无法用文件行数来确定标准数组的大小的,因为C/C++中的标准数组,大小是在编译前确定的,无法在编译执行后根据数据文件再确定。
而csv文件,是没有文件信息头的,你只能在完全读取后,才能知道总行数,因此最合理的是使用Vector和CIntArray这样的动态数组,或者动态链表。
当然,使用指针数组也是可以的,只是需要读取2次,大致代码如下:
char strLine[100]
int* iData
ifstream f("xxx.csv")
int line=0,i=0
while(f.getline(strLine,100))
line++
iData = new int[line]
f.seekg(0,ios::beg)//回到文件头部,重新读取
while(f.getline(strLine,100))
{
sscanf(strLine,"%d",&iData[i++])
}
评论列表(0条)