CSV格式不用多说,逗号分隔,用文本编辑器打开,是按行存储;用excel打开,就是以”,”分隔的。
在实际操作中,发现fstream文件可以进行行获取,下面用fstream存储和读取,并提取了分隔后的文件字段。这里支持中文。
1、包含文件
后面用到了vector容器类,若需要自行添加。
include <fstream>
using namespace std;
2、存储
这里进进行简单了存储。 最后一行输出完毕后,不要加上换行“《endl”。
ofstream outfile;
outfile.open("test.csv", ios::out);
outfile << "" << ',' << "abc" << ',' << "def" << ',' << "ghi" << ',' << "jkl" << ',' << "mno" << endl;
outfile << "" << ',' << "pqr";
outfile.close();
3、读取
按行读取,用到getlines(); 和fstream一起用的时候,提示是std的重载函数。将一行的每个逗号分隔的存储在CString对象中。
int i = 0;
int j = 0;
ifstream infile;
infile.open("test.csv", ios::in);
vector<CString> meb[2];// 两行
CString strTemp;
while (!infile.eof()) // 文件是否读取结束
{
char s[200];
infile.getline(s,200); //读取一行,以'\0'结尾
for (i = 0; i < 200,s[i]!='\0';i++)
{
if (s[i] != ',' && s[i]!='\0')
{
strTemp += s[i];
continue;
}
else
{
meb[j].push_back(strTemp);
strTemp = "";
}
if (s[i]=='\0')
break;
}
j++;
}
infile.close();
4、存储的结果
meb[0]: [0] “”, [1] “abc”, [2] “def”, [3] “ghi”, [4] “jkl”, [5] “mno”
meb[1]: [0] “”, [1] “pqr”
这里结果用 meb[i].at(j)读取。要是需要其值,可以用 atoi 或者 atof转化。
这里读取效率不怎么高,应付简单的情况还是可以了。