所以 简单的csv文件, 只需要按照文本方式打开
然后以逗号为分隔符 读取每个域的内容就可以了。
可以根据内容约定, 存储成数组或者结构体
使用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}假定数据存放在 a.csv 中,每行 列数 都是 4 列,行尾 有 换行 符。行数不定,读到 EOF 为止。按目前例子来看,它们是16 进制 正整数,逗号分隔,所以用有格式读:
fscanf(fp,"%x,%x,%x,%x",&x[n][0],&x[n][1],&x[n][2],&x[n][3])
便可。完整的 c++程序如下。
#include<iostream>
#include<fstream>
#include <string>
using namespace std
#include <stdio.h>
main(){
int x[100][4]
int j,i,n=0
FILE *fp
fp=fopen("a.csv","r")
while(1){
fscanf(fp,"%x,%x,%x,%x",&x[n][0],&x[n][1],&x[n][2],&x[n][3])
if (feof(fp))break
n++
}
fclose(fp)
printf("n=%d\n",n)
for (j=0j<nj++){
for (i=0i<4i++) printf("%x ",x[j][i])
printf("\n")
}
return 0
}
输出:
n=3
a b c d
1 2 3 4
7 4 3 1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)