From C to C++

输入/输出操纵符

<iostream>定义了一些无参的操纵符,包括:

  • endl,输出 '\n' 并冲洗输出流。例如:cout << endl;
  • dec, hex, oct,更改用于整数输入/输出的基数(进制)
  • left,right, 设置填充字符的布置,即左对齐或右对齐
  • fixed,scientific,更改用于浮点 I/O 的格式化
  • showpoint,noshowpoint,控制浮点表示是否始终包含小数点
  • showpos,noshowpos,控制是否将 + 号与非负数一同使用

    <iomanip>定义了一些有参的操纵符函数,包括:

  • setw(n),更改下个输入/输出域的宽度,宽度为 n
    • setprecision(n),更改浮点精度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
double myFloat=123.4578;
int myInt=5;

cout << fixed << showpoint << setprecision(3);
cout << setw(10) << left << "Float";
cout << setw(12) << right << myFloat << endl;
cout << setw(10) << left << "Int";
cout << setw(12) << right << myInt << endl;

return 0;

命名空间:

用来避免命名时发生冲突,在命名空间块内声明的符号被放入一个具名的作用域中,避免这些符号被误认为其他作用域中的同名符号。在不同命名空间中可以出现相同名字的变量。

语法:

1
2
3
4
5
6
7
8
9
10
namespace my_namespace{
int a;
void func();
namespace name2{
int b;
}
}
using namespace my_namespace //表示在这以后编译都是用这个命名空间

my_namespace::func() //命名空间名::成员名

引用

引用的概念:

声明具名的变量引用,即既存对象或函数的别名。
引用名特点:使用时类似变量,作为参数时能传引用

因为引用不是对象,故:
不存在 引用的数组
不存在 指向引用的指针
不存在 引用的引用
• C++不存在 引用为空的概念,即引用必须被定义

1
2
3
4
5
6
7
8
9
10
11
12
13
int main(){
int a, b;
cin >> a >> b;
swap(a, b);
cout << "max = " << a<< " "<< "min = " << b;
}

void swap(int &x, int &y){
int temp;
temp = x;
x = y;
y = temp;
}

引用和指针的比较:

相同:可以使一个函数向调用者返回多个数值。

不同:原理不同。引用作为函数参数,实参是变量本身,形参是实参变量的别名,使用变量时不需要解引用。而指针作函数参数,则实参是某变量的地址,使用这个地址访问对应的变量必须解引用。指针可以是null值,引用不可以是null值(仅限C++,多数语言的引用支持特殊的空引用)。

• 从返回值的角度看,引用形参比利用指针方便。


The end