C#如何简单地读取CSV文件中的数据到数组?

C#如何简单地读取CSV文件中的数据到数组?,第1张

使用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++])

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11944041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存