您好我正在将一些输出数据打印到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
答案 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";