• 9267阅读
  • 11回复

[提问]关于Qt中文本文件输出信息换行的问题 [复制链接]

上一主题 下一主题
离线kaize0409
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-08
— 本帖被 XChinux 从 Qt基础编程 移动到本区(2013-04-01) —
我想实现将程序中现有的信息保存到文本文件中,为什么使用了"<<endl;"还是所有的信息都在一行里?
离线jdwx

只看该作者 1楼 发表于: 2012-05-08
“\n”
"\r\n"
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线kaize0409
只看该作者 2楼 发表于: 2012-05-08
貌似"\n"不行,"\r\n“却可以,这是问什么呢?
离线kaize0409
只看该作者 3楼 发表于: 2012-05-08
回 1楼(jdwx) 的帖子
貌似"\n"不行,"\r\n“却可以,这是问什么呢?
离线roywillow

只看该作者 4楼 发表于: 2012-05-08
QFile打开的时候要指定QIODevice::Text,否则\n和endl会被解析成不同的内容,特别是windows下,因为windows下换行必须是CR+LF
比如file.open(QIODevice::Write),之后不管是用QTextStream还是别的,windows下直接写入“\n”或者用stream的endl,换行都是LF
如果是file.open(QIODevice::Write | QIODevice::Text),换行就是成了CR+LF了
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线kaize0409
只看该作者 5楼 发表于: 2012-05-08
回 4楼(roywillow) 的帖子
我是用 file.open(QFile::WriteOnly | QFile::Truncate)  而且是在windows下,试过file.open(QIODevice::Writeonly)还是没换行,必须使用"\r\n".
离线dbzhang800

只看该作者 6楼 发表于: 2012-05-09
Re:回 4楼(roywillow) 的帖子
引用第5楼kaize0409于2012-05-08 23:08发表的 回 4楼(roywillow) 的帖子 :
我是用 file.open(QFile::WriteOnly | QFile::Truncate)  而且是在windows下,试过file.open(QIODevice::Writeonly)还是没换行,必须使用"\r\n".

不妨重新看看4楼告诉你该如何做的 ;-)


另外:可以看看这个 http://blog.csdn.net/dbzhang800/article/details/6430280
-----------------------
题外,其实现在来说,如果看不到换行,只能说明所用的编辑器 太弱(比如Windows自带的记事本) ,稍为高级点的编辑器都会支持多种换行格式,哪怕是windows自带的写字板。



离线feifeishu

只看该作者 7楼 发表于: 2012-05-09
表示“\n”就可以,可是实现的,不过是要用QTextStream来存
离线roywillow

只看该作者 8楼 发表于: 2012-05-09
回 6楼(dbzhang800) 的帖子
话说……总感觉好像您都把\r、\n写成了/r、/n……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线dbzhang800

只看该作者 9楼 发表于: 2012-05-10
Re:回 6楼(dbzhang800) 的帖子
引用第8楼roywillow于2012-05-09 19:25发表的 回 6楼(dbzhang800) 的帖子 :
话说……总感觉好像您都把\r、\n写成了/r、/n……

没办法,刚开始我也觉得自己写错了,可是对比发现本机原稿没问题。


后来发现是那一时期CSDN自作聪明,帮我做的转换
离线roywillow

只看该作者 10楼 发表于: 2012-05-10
回 9楼(dbzhang800) 的帖子
看着真别扭啊……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线cfxks1989

只看该作者 11楼 发表于: 2012-05-10
电脑系统不同,windows系统需要\r\n才能识别换行,Linux系统只需要\n
快速回复
限100 字节
 
上一个 下一个