个人编写的C++教程(不断连载中)――标准输入输出2

前面已经讲了很多cin对象的方法,下面就介绍几个关于cout对象的方法。这些方法的目的都在于限制输出结果的格式,或许在实际应用中,cout对象的方法要比cin的方法更为普遍。同样还是先来看一段简单的示例代码。
 
#include <cstdlib>
#include <iostream>
#include <math.h>
 
using namespace std;
 
void main()
{
    double result = sqrt(3.0);
 
    cout <<"对3开平方保留小数点后0-9位,结果如下:\n"<<endl;
 
    for(int i=0; i<=9; i++)
    {
        cout.precision(i);
        cout<<result<<endl;
    }
 
    cout<<"当前的输出精度为: "<<cout.precision()<<endl;
}
 
请读者完成编码后,编译并运行上述程序。输出结果表明precision方法可以通过四舍五入的方法保留有限精度,特别地当精度参数未指定时,输出结果将采用当前默认的精度输出结果。
 
函数width被用来设置域宽。cout对象和cin对象都有width方法。cin对象的width方法限定输入操作提取字符串的最大宽度比定义的域宽小1,这是因为在输入的字符串后面必须加上一个空字符,因此当其读到空格时该次读操作也会终止。cout对象的width方法可以对输出结果设置域宽,如果所需的宽度比设置的域宽小,那么空位就用填充字符进行填充,默认情况下的填充字符是空格。如果显示数据所需的宽度比设置的域宽大,则系统输出所有位。特别说明,域宽设置仅对下一行流读入或流输出操做有效,在一次操作完后域宽被置0。下面给出一段示例程序。
 
#include <iostream>
#include <iomanip>
 
using namespace std;
 
void main()
{
    int width=4;
    char str[20];
 
    std::cout<<"请输入一段文本:\n";
 
    std::cin.width(5); //每次只接收4个字符,其他的放在流中等待接收。
      
    while( std::cin>>str )
    {
        std::cout.width(width++); //将4个字符输出,设置每次输出的域宽增加1
        std::cout<<str<<endl;   //输出字符
        std::cin.width(5);        //设置接收4个字符
    }
}
 
程序的运行结果如下:
请输入一段文本:
Hello World!
Hell
    o
 Worl
     d!
 
来分析一下得到上述输出结果的原因。因为程序每次只接收4个字符长度的输入,因此最开始读进来的数据流所包含的信息是“Hell”,接下来程序将4个字符输出。然后程序接着继续读入4个字符长度的输入,这是读进来的数据流本应该是“o Wo”。但注意这里因为第一个字符“o”后面是空格,所以读操作就不再继续读了,于是这时读入的数据是“o”。程序这时需要将5个字符输出, 因为待输出数据中仅有一个字符,所以程序向流中添加4个填充字符,即空格。于是第二次输出的结果是“    o”。如此继续下去,即可得到上述输出结果。
--------------------------------------------------

你可能感兴趣的:(职场,输出,休闲,标准输入)