在C ++中输出格式

时间:2016-02-25 07:16:52

标签: c++ format output

您好我正在将一些输出数据打印到txt文件,该文件将由另一个程序使用,但为了使数据令人愉悦,需要将它们对齐在列中。 有人可以帮我吗 -

#include <iostream>
#include <iomanip>     // std::cout, std::fixed, std::scientific

int main () {


          int r=1;
          double value1=-1.187;
          double value2=5.273430;
          double value3=5.27343056896;
          double value4=0.0000056868;
          int i=1;
          int r1=10;
           int r2=2;
          double value5=1.1875985;
          double value6=-5.273430;
          double value7=-0.27343056896;
          double value8=1.0000056868;


        std::cout.precision(6);
        std::cout << std::fixed;
       // std::cout << std::setw( 8 );
        //std::cout << std::setfill ('0');
        std::string space="   ";

        std::cout<<r<<space<<value1<<space<<value2<<space<<value3<<space<<value4<<space<<i<<std::endl;
        std::cout<<r2<<space<<value5<<space<<value1<<space<<value4<<space<<value3<<space<<i<<std::endl;
        std::cout<<r1<<space<<value5<<space<<value6<<space<<value7<<space<<value8<<space<<i<<std::endl;


  return 0;
}


The result looks like this

1   -1.187000   5.273430   5.273431   0.000006   1

2   1.187599   -1.187000   0.000006   5.273431   1

10   1.187599   -5.273430   -0.273431   1.000006   1


but i really want is

1   -1.187000   5.273430   5.273431   0.000006   1

2    1.187599  -1.187000   0.000006   5.273431   1

10   1.187599  -5.273430  -0.273431   1.000006   1

enter image description here

2 个答案:

答案 0 :(得分:2)

有两种简单的方法可以解决您的问题。

为什么不尝试使用旧的printf();?它在输出格式化数据方面确实更好。

printf("%1.5lf\t%1.5lf\t%1.5lf\t%1.5lf\t%1d\t\n",r, value1, value2, value3,value4, i);

您已添加<iomanip>,那么为什么不尝试使用setw

std::cout<<std::setw(10);
std::cout<<r<<value1<<value2<<value3<<value4<<i<<std::endl;

答案 1 :(得分:1)

变化

std::string space="   ";

std::string space="\t";