MFC读写txt文件
2012-09-27 00:43
357 查看
一直认为博客是一种学习笔记,且与人交流经验、心得的平台,如若觉得文章能为各位看客解惑,也请留名一二,能使人藉此在计算机的海洋中页不觉孤独.
单单读写txt文件的话,方法很多,包括C++中fiostream以及MFC封装的CFile,CStdioFile等类.这里就列出按行读取txt的2中较实用的方法:
1.流
FILE *stream;
char line[255];
if( (stream = fopen( "aa.txt ", "r " )) != NULL )
{
while (!feof(stream))
{
char *ch = fgets( line, 1024, stream );
//数据处理
if (ch == NULL) break;
}
}
fclose( stream );
2.MFC CStioFile类与CFile类,若想按行读取,每行分别处理,无疑使用CStioFile是方便的
CStdioFile myFile;
CString strPathListIterm;
CStringArray arrPathList;
if(myFile.Open(lpszPath,CFile::modeRead) == NULL)
return FALSE;
else
{
setlocale( LC_CTYPE, ("chs")); //解决CStdioFile-unicode乱码
pThis->m_BufferSize = myFile.GetLength();
while(myFile.ReadString(strPathListIterm)) //读入缓冲字符串
{
pThis->arrPathList.Add(strPathListIterm); //加入字符串数组
}
}
myFile.Close();
注意:CStdioFile类对Unicode字符编码支持不太好,需要我们手动解决!
补充:解决乱码问题还需还原区域设定才行:
char* old_locale=_strdup( setlocale(LC_CTYPE,NULL) ); //记住原来的语言区域设定
setlocale( LC_CTYPE, ("zh_TW.UTF-8")); //解决CStdioFile-unicode乱码
...XXXXXXXXXXXXXXXXX...
setlocale( LC_CTYPE, old_locale ); //还原语言区域的设置
free( old_locale );
写文件比读文件更加简单:
CStdioFile myFile;
CString strWriteItem;
if(myFile.Open(pThis->m_strSzPath,CFile::modeReadWrite|CFile::modeCreate) == NULL)
return FALSE;
else
{
int nCount = arrPathList.GetSize();
for (int i = 0; i < nCount; ++i)
{
strWriteItem = (arrPathList[i]) +_T("\n");
myFile.WriteString(strWriteItem); //将缓冲区写入文件
}
}
myFile.Close();
注意:若想在txt中换行显示,那么必须加上\n,不要\r\n,也不是\r,那样会有小黑块.
本文出自 “马踏星空” 博客,请务必保留此出处http://moomlight.blog.51cto.com/2654869/1007735
单单读写txt文件的话,方法很多,包括C++中fiostream以及MFC封装的CFile,CStdioFile等类.这里就列出按行读取txt的2中较实用的方法:
1.流
FILE *stream;
char line[255];
if( (stream = fopen( "aa.txt ", "r " )) != NULL )
{
while (!feof(stream))
{
char *ch = fgets( line, 1024, stream );
//数据处理
if (ch == NULL) break;
}
}
fclose( stream );
2.MFC CStioFile类与CFile类,若想按行读取,每行分别处理,无疑使用CStioFile是方便的
CStdioFile myFile;
CString strPathListIterm;
CStringArray arrPathList;
if(myFile.Open(lpszPath,CFile::modeRead) == NULL)
return FALSE;
else
{
setlocale( LC_CTYPE, ("chs")); //解决CStdioFile-unicode乱码
pThis->m_BufferSize = myFile.GetLength();
while(myFile.ReadString(strPathListIterm)) //读入缓冲字符串
{
pThis->arrPathList.Add(strPathListIterm); //加入字符串数组
}
}
myFile.Close();
注意:CStdioFile类对Unicode字符编码支持不太好,需要我们手动解决!
补充:解决乱码问题还需还原区域设定才行:
char* old_locale=_strdup( setlocale(LC_CTYPE,NULL) ); //记住原来的语言区域设定
setlocale( LC_CTYPE, ("zh_TW.UTF-8")); //解决CStdioFile-unicode乱码
...XXXXXXXXXXXXXXXXX...
setlocale( LC_CTYPE, old_locale ); //还原语言区域的设置
free( old_locale );
写文件比读文件更加简单:
CStdioFile myFile;
CString strWriteItem;
if(myFile.Open(pThis->m_strSzPath,CFile::modeReadWrite|CFile::modeCreate) == NULL)
return FALSE;
else
{
int nCount = arrPathList.GetSize();
for (int i = 0; i < nCount; ++i)
{
strWriteItem = (arrPathList[i]) +_T("\n");
myFile.WriteString(strWriteItem); //将缓冲区写入文件
}
}
myFile.Close();
注意:若想在txt中换行显示,那么必须加上\n,不要\r\n,也不是\r,那样会有小黑块.
本文出自 “马踏星空” 博客,请务必保留此出处http://moomlight.blog.51cto.com/2654869/1007735
相关文章推荐
- MFC中TXT文件读写
- MFC --txt文本文件的读写
- 十一:MFC关于读写TXT文件
- MFC对话框实现txt文件读写,及时间差判断
- MFC 读写配置文件——ini文件
- python读写不同编码txt文件
- C# 读写TXT文件遇到乱码问题
- VC++ VS2010 MFC CString 追加append 写入文件 txt 捕捉键盘按键消息
- MFC文件读写之ini文件
- MFC文件的读写操作,类的序列化与反序列化,CFile,CFileDialog,CArchive,CStdioFile
- C++读写txt文件方式以及基于opencv的Mat数据类型读写txt文件类型
- vb.net 读写TXT文件!
- C#读写txt文件的两种方法介绍
- CfileDialog 文件对话框 mfc打开并读取txt文件
- OpenCV学习笔记 cv.Mat 与 .txt 文件数据的读写操作
- 在vc中用MFC按纽打开一个txt文件,在旁边的文本框里显示文件的路径的方法
- C++中文件的读写(MFC)
- MFC中在TXT文件中数据后面添加新数据
- MFC文件类CStdioFile读写中文文件的注意事项
- C#读写txt文件的两种方法介绍