for (int i = 0; i < nItem; i++)
{
/*fileData += m_CDialogChange.m_Question_buff.GetAt(i);
fileData += enter;
fileData += m_CDialogChange.m_Reply_buff.GetAt(i);
fileData += enter;*/ fileData += m_CDialogChange.m_Question_buff.GetAt(i);
fileData += _T("\n");
fileData += m_CDialogChange.m_Reply_buff.GetAt(i);
fileData += _T("\n");;
}
//temp = fileData;
BYTE bom[2] = {0xff, 0xfe};
file.Write(bom,sizeof(bom));
file.Write(fileData,fileData.GetLength());
file.Close();我这样写的,写进去后打开txt文件看到换行的位置有乱码 如:请输入问题ഀ
请输入回复ഀ
请输入问题ഀ
请输入回复ഀ
请输入问题ഀ
请问换行应该怎么写?
{
/*fileData += m_CDialogChange.m_Question_buff.GetAt(i);
fileData += enter;
fileData += m_CDialogChange.m_Reply_buff.GetAt(i);
fileData += enter;*/ fileData += m_CDialogChange.m_Question_buff.GetAt(i);
fileData += _T("\n");
fileData += m_CDialogChange.m_Reply_buff.GetAt(i);
fileData += _T("\n");;
}
//temp = fileData;
BYTE bom[2] = {0xff, 0xfe};
file.Write(bom,sizeof(bom));
file.Write(fileData,fileData.GetLength());
file.Close();我这样写的,写进去后打开txt文件看到换行的位置有乱码 如:请输入问题ഀ
请输入回复ഀ
请输入问题ഀ
请输入回复ഀ
请输入问题ഀ
请问换行应该怎么写?
{
CFile file(_T("F:\\11.txt"), CFile::modeCreate | CFile::modeWrite);
CString strText(_T("Hello, World!"));
strText += _T("\r\n");
strText += _T("你好,世界!");
strText += _T("\r\n");
strText += _T("ABC");#ifndef _UNICODE
wchar_t* pBuf = NULL;
int nLen = MultiByteToWideChar(CP_ACP, 0, strText, -1, pBuf, 0);
pBuf = new wchar_t[nLen];
memset(pBuf, 0, nLen * sizeof(wchar_t));
MultiByteToWideChar(CP_ACP, 0, strText, -1, pBuf, nLen);
file.Write(pBuf, nLen * sizeof(wchar_t));
#else
file.Write(strText, strText.GetLength() * sizeof(TCHAR));
#endif
file.Close();
}
catch (CException* e)
{
e->ReportError();
e->Delete();
}
写文件: CFile file;
if (file.Open(strFilePath,CFile::modeCreate + CFile::modeReadWrite))
{
CString fileData(_T(""));
int nItem = m_CDialogChange.m_Question_buff.GetSize();
for (int i = 0; i < nItem; i++)
{
fileData += m_CDialogChange.m_Question_buff.GetAt(i);
fileData += _T("\r\n");
fileData += m_CDialogChange.m_Reply_buff.GetAt(i);
fileData += _T("\r\n");;
}
BYTE bom[2] = {0xff, 0xfe};
file.Write(bom,sizeof(bom));
file.Write(fileData,fileData.GetLength());
file.Close();
}
读文件:
if (file.Open(strFilePath,CFile::modeRead))
{
int nIndex = 0;
WCHAR* pbuff = new WCHAR[file.GetLength()/2];
file.Read(pbuff,file.GetLength());
CString fileBuff(pbuff);
file.Close();
delete(pbuff);
}
CString fileBuff(pbuff);
int pos = 0;
while(!fileBuff.IsEmpty())
{
pos = fileBuff.Find(_T("\n"));
if (pos <= 0)
{
break;
}
strLine = fileBuff.Left(pos);
fileBuff = fileBuff.Mid(pos+1);
}
fileBuff = fileBuff.Mid(pos+1);类似,就用这个吧,贴下完整的代码,我调试了一天可用的:int CPageHome::SaveFile(CString strFilePath)
{
//CStdioFile file;
CFile file;
if (file.Open(strFilePath,CFile::modeCreate + CFile::modeReadWrite))
{
CString fileData(_T(""));
int nItem = m_CDialogChange.m_Question_buff.GetSize();
int i = 0;
for (; i < nItem; i++)
{
fileData += m_CDialogChange.m_Question_buff.GetAt(i);
fileData += _T("\r\n");
fileData += m_CDialogChange.m_Reply_buff.GetAt(i);
fileData += _T("\r\n");
} BYTE bom[2] = {0xff, 0xfe};
file.Write(bom,sizeof(bom));
int nfileLeng = fileData.GetLength()*2;
file.Write(fileData,nfileLeng);
file.Close();
} return 0;
}int CPageHome::ReadFile(CString strFilePath)
{
//CStdioFile file;
CFile file;
CString strLine(_T(""));
CString strNumber(_T(""));
m_CDialogChange.m_Question_buff.RemoveAll(); // 清空数据区
m_CDialogChange.m_Reply_buff.RemoveAll(); // 清空数据区
m_listctrl.DeleteAllItems(); // 清空List控件显示
if (file.Open(strFilePath,CFile::modeRead))
{
int nIndex = 0;
/*while(file.ReadString(strLine))
{
strNumber.Format(_T("%d"),nIndex);
m_listctrl.InsertItem(nIndex,strNumber);
m_CDialogChange.m_Question_buff.Add(strLine);
m_listctrl.SetItemText(nIndex, 1, strLine );
if (file.ReadString(strLine))
{
m_CDialogChange.m_Reply_buff.Add(strLine);
m_listctrl.SetItemText(nIndex, 2, strLine );
}
else
{
m_listctrl.DeleteItem(m_listctrl.GetItemCount() - 1);
m_CDialogChange.m_Question_buff.RemoveAt(m_CDialogChange.m_Question_buff.GetSize() - 1);
break;
}
nIndex++;
}*/ WCHAR* pbuff = new WCHAR[file.GetLength()/2 + 2];
file.Read(pbuff,file.GetLength());
CString fileBuff(pbuff); file.Close();
delete(pbuff);
//delete pbuff;
//fileBuff.Tokenize()
int pos = 0;
while(!fileBuff.IsEmpty())
{
pos = fileBuff.Find(_T("\n"));
if (pos <= 1)
{
break;
}
strLine = fileBuff.Left(pos-1); // 将\n去掉
//int i = strLine.GetLength();
fileBuff = fileBuff.Mid(pos+1); strNumber.Format(_T("%d"),nIndex);
m_listctrl.InsertItem(nIndex,strNumber);
m_CDialogChange.m_Question_buff.Add(strLine);
m_listctrl.SetItemText(nIndex, 1, strLine ); pos = fileBuff.Find(_T("\n"));
if (pos <= 1)
{
m_listctrl.DeleteItem(m_listctrl.GetItemCount() - 1);
m_CDialogChange.m_Question_buff.RemoveAt(m_CDialogChange.m_Question_buff.GetSize() - 1);
break;
}
strLine = fileBuff.Left(pos-1);
fileBuff = fileBuff.Mid(pos+1); m_CDialogChange.m_Reply_buff.Add(strLine);
m_listctrl.SetItemText(nIndex, 2, strLine );
nIndex++;
}
}
return 0;
}