c++中字符串的格式化输出问题!请高手指教!!!
在c++的控制台程序中,我想做到以下的输出效果,不知道有什么方法没有!:第一列第二列第三列firstsecondthirddictionaryhellobookcupba...
在c++的控制台程序中,我想做到以下的输出效果,不知道有什么方法没有!:
第一列 第二列 第三列
first second third
dictionary hello book
cup banana water
就是每一列要输出的字符总是从一个固定的位置开始输出的,而不管前面
一列字符串的长度是多少!
不知道有没有啥好的方法,请高手指点!!!! 展开
第一列 第二列 第三列
first second third
dictionary hello book
cup banana water
就是每一列要输出的字符总是从一个固定的位置开始输出的,而不管前面
一列字符串的长度是多少!
不知道有没有啥好的方法,请高手指点!!!! 展开
4个回答
展开全部
3.控制浮点数值显示
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。
例如,下面的代码分别用浮点、定点和指数方式表示一个实数:
//*********************
//** ch2_1.cpp **
//*********************
#include <iostream.h>
#include <iomanip.h> //要用到格式控制符
void main()
{
double amount = 22.0/7;
cout <<amount <<endl;
cout <<setprecision(0) <<amount <<endl
<<setprecision(1) <<amount <<endl
<<setprecision(2) <<amount <<endl
<<setprecision(3) <<amount <<endl
<<setprecision(4) <<amount <<endl;
cout <<setiosflags(ios::fixed);
cout <<setprecision(8) <<amount <<endl;
cout <<setiosflags(ios::scientific)
<<amount <<endl;
cout <<setprecision(6); //重新设置成原默认设置
}
运行结果为:
3.14286
3
3
3.1
3.14
3.143
3.14285714
3.14285714e+00
该程序在32位机器上运行通过。
在用浮点表示的输出中,setprecision(n)表示有效位数。
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。
在用定点表示的输出中,setprecision(n)表示小数位数。
第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。
在用指数形式输出时,setprecision(n)表示小数位数。
第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8。
小数位数截短显示时,进行4舍5入处理。
4.设置值的输出宽度
除了使用空格来强行控制输出间隔外,还可以用setw(n)控制符。如果一个值需要比setw(n)确定的字符数更多的字符,则该值将使用它所需要的所有字符。例如:
float amount=3.14159;
cout <<setw(4) <<amount <<endl;
其运行结果为:3.14159。它并不按4位宽度,而是按实际宽度输出。
如果一个值的字符数比setw(n)确定的字符个数更少,则在数字字符前显示空白,不同于其他控制符,setw(n)仅仅影响下一个数值输出,换句话说,使用setw设置的间隔方式并不保留其效力。例如:
cout<<setw(8)
<<10
<<20<<endl;
运行结果为:
-------1020
运行结果中的下横线表示空格。整数20并没有按宽度8输出。setw()的默认值为宽度0,即setw(0),意思是按输出数值的表示宽度输出, 所以20就紧挨10了。
使用setprecision(n)可控制输出流显示浮点数的数字个数。C++默认的流输出数值有效位是6。
如果setprecision(n)与setiosflags(ios::fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios::fixed)是用定点方式表示实数。
如果与setiosnags(ios::scientific)合用, 可以控制指数表示法的小数位数。setiosflags(ios::scientific)是用指数方式表示实数。
例如,下面的代码分别用浮点、定点和指数方式表示一个实数:
//*********************
//** ch2_1.cpp **
//*********************
#include <iostream.h>
#include <iomanip.h> //要用到格式控制符
void main()
{
double amount = 22.0/7;
cout <<amount <<endl;
cout <<setprecision(0) <<amount <<endl
<<setprecision(1) <<amount <<endl
<<setprecision(2) <<amount <<endl
<<setprecision(3) <<amount <<endl
<<setprecision(4) <<amount <<endl;
cout <<setiosflags(ios::fixed);
cout <<setprecision(8) <<amount <<endl;
cout <<setiosflags(ios::scientific)
<<amount <<endl;
cout <<setprecision(6); //重新设置成原默认设置
}
运行结果为:
3.14286
3
3
3.1
3.14
3.143
3.14285714
3.14285714e+00
该程序在32位机器上运行通过。
在用浮点表示的输出中,setprecision(n)表示有效位数。
第1行输出数值之前没有设置有效位数,所以用流的有效位数默认设置值6:第2个输出设置了有效位数0,C++最小的有效位数为1,所以作为有效位数设置为1来看待:第3~6行输出按设置的有效位数输出。
在用定点表示的输出中,setprecision(n)表示小数位数。
第7行输出是与setiosflags(ios::fixed)合用。所以setprecision(8)设置的是小数点后面的位数,而非全部数字个数。
在用指数形式输出时,setprecision(n)表示小数位数。
第8行输出用setiosflags(ios::scientific)来表示指数表示的输出形式。其有效位数沿用上次的设置值8。
小数位数截短显示时,进行4舍5入处理。
4.设置值的输出宽度
除了使用空格来强行控制输出间隔外,还可以用setw(n)控制符。如果一个值需要比setw(n)确定的字符数更多的字符,则该值将使用它所需要的所有字符。例如:
float amount=3.14159;
cout <<setw(4) <<amount <<endl;
其运行结果为:3.14159。它并不按4位宽度,而是按实际宽度输出。
如果一个值的字符数比setw(n)确定的字符个数更少,则在数字字符前显示空白,不同于其他控制符,setw(n)仅仅影响下一个数值输出,换句话说,使用setw设置的间隔方式并不保留其效力。例如:
cout<<setw(8)
<<10
<<20<<endl;
运行结果为:
-------1020
运行结果中的下横线表示空格。整数20并没有按宽度8输出。setw()的默认值为宽度0,即setw(0),意思是按输出数值的表示宽度输出, 所以20就紧挨10了。
展开全部
#include<iomanip.h>
setw(n)用法: 通俗地讲就是预设宽度
为了方便对齐只要将n值调整好即可,
参考
如 cout<<setw(5)<<255<<endl;
setw(n)用法: 通俗地讲就是预设宽度
为了方便对齐只要将n值调整好即可,
参考
如 cout<<setw(5)<<255<<endl;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用set(n)啊,不过前面要有#include<iomanip>的头文件,此头文件专门用于控制输入输出的。
set(n)设置字段宽度为n位
不过还要设置成左对齐的方式。具体为:
cout<<set(n)<<setiosflag(ios::lef)<<x<<;
x是要求输出的变量名
下面有个例子看看吧
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float a[100];
int i,j=0;
for(i=1,a[0]=0.0001;i<100;i++)
{
a[i]=a[i-1]+0.01;
j++;
cout<<setiosflags(ios::left)<<setw(12)<</*setprecision(8)<<*/a[i-1];
if(j%5==0)
{
cout<<endl;
}
}
return 0;
}
set(n)设置字段宽度为n位
不过还要设置成左对齐的方式。具体为:
cout<<set(n)<<setiosflag(ios::lef)<<x<<;
x是要求输出的变量名
下面有个例子看看吧
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
float a[100];
int i,j=0;
for(i=1,a[0]=0.0001;i<100;i++)
{
a[i]=a[i-1]+0.01;
j++;
cout<<setiosflags(ios::left)<<setw(12)<</*setprecision(8)<<*/a[i-1];
if(j%5==0)
{
cout<<endl;
}
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用stew()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询