• 2978阅读
  • 1回复

[提问]关于qt写入文本文件换行的问题,求解惑 [复制链接]

上一主题 下一主题
离线kingsgr
 

只看楼主 倒序阅读 楼主  发表于: 2015-07-07
代码如下,很简单
我想要的输出是这样:(点表示空格)
0..0..1..2..
1..0..1..2..
2..0..1..2..
但实际输出是这样的:
0..0..1..2..
..1..0..1..2..
..2..0..1..2..
..
除了第一行以外,每行开头会出现两个空格,且会多出一行,有两个空格,
实在不知道什么原因,求解答。
谢谢

  1. int main(int argc, char *argv[])
  2. {
  3.     QCoreApplication a(argc, argv);
  4.     QFile data("output.txt");
  5.     int i,j;
  6.     if(data.open(QIODevice::Text|QFile::WriteOnly|QIODevice::Truncate)){
  7.         QTextStream out(&data);
  8.         out<<qSetFieldWidth(3)<<left;
  9.              for(i=0;i<3;i++)
  10.                 {   out<<i;
  11.                         for(j=0;j<3;j++)
  12.                         {
  13.                             out<<j;
  14.                         }
  15.                         out<<'\n';
  16.                 }
  17.     }
  18.     return a.exec();
  19. }


离线kingsgr

只看该作者 1楼 发表于: 2015-07-07
已经找到原因了,最后输出的‘\n’,在设定宽度为3后,输出到文本文件的结果就是先换行再加上两个空格。
修改后的代码如下:
  1. int main(int argc, char *argv[])
  2. {
  3.     QCoreApplication a(argc, argv);
  4.     QFile data("output.txt");
  5.     int i,j;
  6.     if(data.open(QIODevice::Text|QFile::WriteOnly|QIODevice::Truncate)){
  7.         QTextStream out(&data);
  8.              for(i=0;i<3;i++)
  9.                 {   out<<qSetFieldWidth(3)<<left<<i;
  10.                         for(j=0;j<3;j++)
  11.                         {
  12.                             out<<j;
  13.                         }
  14.                         out<<qSetFieldWidth(1)<<'\n';
  15.                 }
  16.     }
  17.     return a.exec();
  18. }

快速回复
限100 字节
 
上一个 下一个