C++常用小知识2

导语

今天我们继续来讲几个C++常用的小知识:
1.C++中的所有运算符
2.流(stream)和缓冲区(buffer)

1.C++中的所有运算符

下面是C++中的所有运算符,按照优先级从高到低的顺序排列:

运算符描述
::作用域解析符
[]数组下标
()函数调用
.成员访问(结构体或类)
->成员访问(指针结构体或指针类)
++, --前缀自增自减
+, -正负号
!, ~逻辑非、按位取反
*, /, %乘、除、模
+, -加、减
<<, >>左移、右移
<, <=, >, >=小于、小于等于、大于、大于等于
==, !=等于、不等于
&按位与
^按位异或
|按位或
&&逻辑与
||逻辑或
=, +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=赋值、复合赋值

其中,一些运算符也可以用于重载,例如 +、-、、/、%、&、|、~、!、=、<、>、<<、>>、^、++、--、()、[]、->、->、new、delete 等运算符可以重载。

2.流(stream)和缓冲区(buffer)

在C++中,流(stream)是一种从源头到终点的数据传输方式。源头和终点可以是文件、键盘、屏幕、网络连接等等。缓冲区(buffer)则是在进行数据传输时,用于临时存储数据的区域。

当我们使用C++输入输出流时,数据会先被存储在缓冲区中,然后根据一定的规则进行读写操作。在输出流中,数据会在缓冲区被填满之后才会被输出。在输入流中,数据会在缓冲区被读取完之后才会进行下一次读取。

下面是一些常用的缓冲区操作:

  1. flush:清空缓冲区并将数据立即输出。可以使用endl操作符或者flush()函数来刷新输出流缓冲区。

  2. setw:设置输出流中的字段宽度(field width)。

cout << setw(10) << "Hello" << endl;

上述代码将输出一个长度为10的字段,其中的字符串为"Hello",如果"Hello"不足10个字符,输出就会被填满,如果超过10个字符,就会被截断。

setprecision:设置输出流中浮点数的精度。

cout << setprecision(4) << 123.456789 << endl;

上述代码将输出123.5,因为我们设置了浮点数的精度为4,所以输出会四舍五入到小数点后第4位。

setiosflags:设置输出流中的一些格式选项。

cout << setiosflags(ios::left) << "Left-aligned" << endl;
cout << setiosflags(ios::right) << "Right-aligned" << endl;

上述代码将输出两行字符串,第一行字符串左对齐,第二行字符串右对齐。

unformatted input/output functions:这些函数可以直接读写数据,而不需要考虑缓冲区的问题。常用的函数包括get()、put()、getline()等等。

char c;
cin.get(c);
cout.put(c);

上述代码将从标准输入流中读取一个字符,然后将它输出到标准输出流中。由于使用了unformatted input/output functions,所以数据直接从流中读取或写入,不需要考虑缓冲区。

总之,缓冲区对于C++输入输出流的操作至关重要,我们需要了解它的内部工作原理,以便更好地掌握输入输出流的使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值