关于回车和换行的困惑!!!

suncheng7808 2009-04-07 02:46:21
我昨天写了一个保存文件的函数,文件写操作是没有问题,但怎么我用回车符(\n)和换行符(\r)都没有用,下面是原代码:

void CFileConverDlg::OnMenuSAVE()
{
// TODO: Add your command handler code here
CFileDialog DFileSave(FALSE,"ini",NULL,OFN_OVERWRITEPROMPT,"ini文件(*.int)|*.ini|AllFile(*.*)|*.*||",NULL);
if(IDOK==DFileSave.DoModal())
{
m_SaveFileName=DFileSave.GetPathName ();
CFile SaveFile;
CString WriteBuf_head="[Main]\n";
CString WriteBuf_ChipMan="ChipManufacturer=";
UpdateData(1);
SaveFile.Open(m_SaveFileName,CFile::modeCreate|CFile::modeWrite|CFile::typeBinary ); //CFile::modeNoTruncate|
SaveFile.Write(WriteBuf_head,WriteBuf_head.GetLength()); //
SaveFile.Write(WriteBuf_ChipMan,WriteBuf_ChipMan.GetLength());
SaveFile.Write(m_ChipManufacturer,m_ChipManufacturer.GetLength());

}
}

但记事本打开保存后的文件却没有换行如下所示:
[Main]ChipManufacturer=SSDD。

但copy到这个贴里就可以看到有换行。或用写字板打开也可以看到有换行

请问大家知道是怎么回事吗?
...全文
127 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
suncheng7808 2009-04-08
  • 打赏
  • 举报
回复
谢谢你!现终于明白了!

因为WINDOWS下,文本文件的回车和换行是成对出现的。按字符模式写文件,则只有回车符的地方会自动加上换行符变为两个字符。但如果你的字符串按二进制方式写入文件,则不会自动加上。记事本程序的智能程度很低,所以打开文件看不到换行。用记事本打开非windows系统下保存的文本文件,也可能发生这种本来有换行的地方看不到换行的情况。
必成桂 2009-04-07
  • 打赏
  • 举报
回复
CString WriteBuf_head="[Main]\r\n";

是可行的,没有问题的。

一个回车就是一个‘\r\n’ 。


suncheng7808 2009-04-07
  • 打赏
  • 举报
回复
也不行,我也试过了,关键是用记事本打开是看不到的换行,但用写字板是可以看到换行的。
Dinelgua 2009-04-07
  • 打赏
  • 举报
回复
CString WriteBuf_head="[Main]\r\n";

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧