c++中字符串的格式化输出问题!请高手指教!!!

在c++的控制台程序中,我想做到以下的输出效果,不知道有什么方法没有!:第一列第二列第三列firstsecondthirddictionaryhellobookcupba... 在c++的控制台程序中,我想做到以下的输出效果,不知道有什么方法没有!:

第一列 第二列 第三列
first second third
dictionary hello book
cup banana water
就是每一列要输出的字符总是从一个固定的位置开始输出的,而不管前面
一列字符串的长度是多少!
不知道有没有啥好的方法,请高手指点!!!!
展开
 我来答
helong19851227
2009-04-11 · TA获得超过113个赞
知道答主
回答量:53
采纳率:100%
帮助的人:71.9万
展开全部
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了。
wanfustudio
2009-04-11 · TA获得超过1万个赞
知道大有可为答主
回答量:5513
采纳率:100%
帮助的人:3775万
展开全部
#include<iomanip.h>
setw(n)用法: 通俗地讲就是预设宽度

为了方便对齐只要将n值调整好即可,

参考
如 cout<<setw(5)<<255<<endl;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
剑起飞虹
2009-04-11
知道答主
回答量:31
采纳率:0%
帮助的人:5.1万
展开全部
用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;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
开着火车逛大街
2009-04-11 · TA获得超过184个赞
知道答主
回答量:83
采纳率:0%
帮助的人:0
展开全部
用stew()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式