想实现的效果是将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文档说明。