C++与C语言的区别——C++是对C语言的扩展(二)——输入cin与输出cout

        C++中使用cin和cout 完成输入输出操作。与scanf和printf 不同,scanf 和printf  是函数,而cin 和cout 是类对象。,属于流操作符。什么是流呢?术语“流”想要表达的意思是:随着时间的推移,字符是顺序生成或者消耗的。咱们看一下是如何“流”的.

        1) 流输入只决定了先后顺序

        比如说下面这段代码

int a,b;
cin >> a >>b;

实际上等价于cin >>a, cin >>b,你千万不要以为此时a =b了。

        2)可以输入输出不同类型的变量      

int a;char b;
cin >>a>>b;
 在C++中这样输入是完全可以的,不受空格、回车或者Tab键的影响。但是在C语言中,输入就比较麻烦。

        3)格式化输出

        C语言中,Printf() 函数拥有强大的格式控制输出。C++也可以实现。说明一个小知识点,由于计算机没有FPU,对于浮点型的数据,小数位都是不准确的。

        cout 默认输出6位有效数字。但是流算子setw()可以设置域宽,但是要包含头文件 #include <iomanip>。比如下面这段代码。

int main()
{
	int a = 12345;
	cout << "xxxxxxxxxxxx" << endl;
	cout << setw(8) << a << endl;
}

输出结果为:

 是不是就输出了8位啊~

如果要设置左对齐呢,也很方便,比如下面:(右对齐是 right)

int main()
{
	int a = 12345;
	cout << "xxxxxxxxxxxx" << endl;
	cout << setiosflags(ios::left )<<setw(8) << a << endl;
}
得到结果:


如果我们想设置小数点位数呢?将setprecision(n)<<setiosflag(ios::fiexed)组合起来使用即可

int main()
{
	float a = 1.28273959705267;
	cout << setprecision(3) << setiosflags(ios::fixed) << a << endl;//setprecision(3)设置小数点位数,需要四舍五入

	cout << setprecision(4) << setiosflags(ios::fixed) << a << endl;

}
得到结果:



如果想按照进制输出呢?代码如下

int main()
{
	int a = 100;
	cout << dec << a << endl;//默认是十进制
	cout << oct << a << endl;//八进制
	cout << hex << a << endl;//十六进制
	cout << setbase(16) << a << endl;//十六进制
}
结果如下:



如果想设置填充符呢,代码如下:

int main()
{
	int a = 1234;
	cout << "xxxxxxxxxxxxxx" << endl;
	cout << setw(10) << a << endl;
	cout << setfill('x') << setw(10) << a << endl;
	cout << setfill('x') <<setiosflags(ios ::left) << setw(10) << a << endl;//左对齐以后,在右面填充 x
}
结果如下:



        4) 读取数量不定的输入数据

        当我们使用一个istream对象作为条件时,其效果是检测流的状态。如果遇到文件结束符(按下 Ctrl +Z,松开手,然后按回车)或者遇到一个无效输入时,istream对象状态变为无效。比如说读取 n 和数,计算前 n 个数据之和。代码如下:

int main()
{
	int sum = 0, value = 0;
	while (cin >> value)
	{
		sum += value;
	}
	cout << "sum = " << sum << endl;
	return 0;
}


 注意,空格和 enter 键都不能结束流输入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值