当前位置:C++技术网 > 资讯 > MFC txt数据读取分割保存的问题

MFC txt数据读取分割保存的问题

更新时间:2016-11-09 20:40:44浏览次数:1+次

想实现的效果是将txt文本文件读出然后保存到数据库中,试过几个分割函数,都无法正确插入到数据库中,但是|Qt中确成功了,现在想问MFC改如何实现这个效果

 while(!in.atEnd()) //将txt中的文件 插入到表thiness中 但是 txt 文件是什么时候建立的呢?
 {
 QString line = in.readLine();
 QStringList fields = line.split("|");
 query1.exec(tr("insert into thickness 
values (%1,''%2'',''%3'')").arg(fields[0]).arg(fields[1]).arg(fields[2]));
 }
 file.close();

CString str;
str.Format(_T("./temp/Zn.txt"));   
CStdioFile m_file(str, CFile::modeRead);
{
::AfxMessageBox(_T("文件打开失败。"));
return  ;
}

CString contents;
while (m_file.ReadString(contents))
{
TCHAR seps[] = _T("|");
TCHAR* token = _tcstok((LPTSTR)(LPCTSTR)contents, seps);
while (token != NULL)
{  
            //不知道怎么分割和组合了、、、求教
}
}
m_file.Close();


C++技术网解答:

    分割和组合的代码如下:


CStdioFile file;
if(!file.Open(_T("D:/1.txt"), CFile::modeRead))
{
    MessageBox(_T("文件打开失败"));
    return;
}
CString contents;
vector<vector<CString> > data_list;
vector<CString> row_list;
while (file.ReadString(contents))
{
    TCHAR seps[] = _T("|");
    row_list.clear();

    TCHAR* token = _tcstok((LPTSTR)(LPCTSTR)contents, seps);
    while (token != NULL)
    {	 
        row_list.push_back(token);
        token = _tcstok(NULL, seps);
    }
    data_list.push_back(row_list);
}
file.Close();
    运行效果图:


 运行效果图

   我们这里使用两个容器,一个行容器,一个数据容器。行容器可以存储拆分的多个数据。然后将一行的数据存入数据容器里。也就形成了一个表格的数据形式。你可以将这个数据容器当做二维数组使用。

    然后你可以格式化成你需要的格式的字符串。代码你再自己看看,对照自己的代码,找到原因。可能是vector你不熟吧。你也可以用数组来实现。或者你对_tcstok的用法还不熟悉,需要查一下MSDN文档说明。