在MFC中读取.CSV文件内容
Read .CSV file contents in MFC
大家好,我是C MFC初学者,我希望通过继承CSTDIOFILE类在C MFC中读取.CSV文件内容的帮助。
该文件具有这样的数据:
aaaaaaaaa; bbbbbbb; ccccccc; dddddddd;eeeeeeee; ffffffff;等...
aaaaaaaa是直接没有"的字符串例如:test1; test2; ...
并在现实中表示excel中的值。
我想要的是创建一个带有两个参数(行和列)的新读取器函数,它们读取到文件中并提取良好的值并将其返回为cstring
目前,这是我拥有的代码:
CString ReadData(int rl, int rc)
{
CString sLine;
LPCTSTR p = sLine;
unsigned int i=1;
unsigned int j=1;
CString s;
while(*p!= EOF)
{
if(*p==';' && i==rl)
s.AppendChar(*p);
if(*p=='n')
i++;
p++;
}
return s;
}
这尚未工作,尚未完成。
我想要什么帮助知道在文件中执行此操作的方法,如何检测文件的末尾(这是正常的eof值?),line的结尾(' n'?),我是否必须将不同的字符串在一行中库存?当然,也欢迎代码中的一些帮助。
一次读取文件一个字符很慢,您可以在一个字符串中以较大的块读取。只要文件不太大,就可以使用。然后将该字符串归为不同的行,并将每一行将每行归为不同的字段。
顺便说一句,您要求"半彩分离值"而不是CSV,因此将','
更改为';'
void tokenize(vector<CStringA> &v, const CStringA &source, char token)
{
for (int start = 0, len = source.GetLength(); start < len;)
{
int end = source.Find(token, start);
if (end < 0) end = len;
v.push_back(source.Mid(start, end - start));
start = end + 1;
}
}
void foo()
{
CStringA source; //read the whole file in to one string "source"
const int bufsize = 512 + 1;
char buf[bufsize];
CFile file("files.csv", CFile::modeRead|CFile::typeBinary);
int count;
while ((count = file.Read(buf, bufsize - 1)) > 0) {
buf[count] = 0;
source += buf;
}
source.Remove('r');
vector<CStringA> lines; //tokenize in to separate lines and store in vector
tokenize(lines, source, 'n');
for (int row = 0; row < (int)lines.size(); row++) {
vector<CStringA> fields; //tokenize in to different fields
tokenize(fields, lines[row], ',');
for (int column = 0; column < (int)fields.size(); column++)
TRACE("%s|", fields[column]); //print each field for testing
TRACE("n");
}
}
相关文章:
- 正在将csv文件读取为双精度矢量
- 如何选择在 csv 文件中输出的位置
- 有没有办法在不使用 getline() 的情况下从.csv文件中读取?
- 无法读取C++中的 CSV 文件
- 流:CSV 文件中的换行符
- 是否可以使用 Python csv 阅读器读取使用 C++ std::setw 生成的文件?
- 使用从文件(stod、strtod、atof)中提取的数据C++从字符串转换为双精度.csv
- 如何正确格式化csv文件?
- 正在分析CSV文件-C++
- 如何获取组件和搜索 CSV 文件
- C++ 中的 CSV 文件管理(特别是设置标头和每个标头将分别具有的值)
- 无法逐行读取.csv文件
- 非常快速地阅读 CSV 文件
- 该程序将.csv文件中的一系列单词放入数组中,然后随机生成句子.但它不起作用
- CSV文件之间的差异,使用getline()产生不同的结果
- 将 CSV 文件中的双倍值C++到矢量中
- C++ 将 CSV 文件的列写入向量
- 使用getline读取.csv文件时出现问题
- CSV文件未从缓冲区获取数据
- 错误的值是使用c++从CSV文件数据写入数组