C++把输入输出看作“流”的概念。
在C++中有两个标准输入输出对象cin和cout,输入重载了右移运算符,输出重载了左移运算符,并且都重载了所有基本类型操作,只不过这样的用法看上去比较别扭,如果看作流的话稍微还合理一点。
输入:
常见的如cin >> n,根据n的类型调用对应的重载运算符函数。对于想获得字符串的输入,还可以调用cin成员函数getline、read等,另外成员函数rdbuf得到streambuf对象指针,streambuf中有in_avail成员函数能获取到缓冲区中未处理的字节数。而cin成员函数ignore则是用来丢未处理字节数的。
输出:
输出cout用法同cin类似,不过一个左移符一个用右移符表示流方向,cout除了能适应各基本类型外,针对格式化输出16进制数可以使用cout << hex << 32,dec十制进oct八进制,hex等都是一个函数,它实际反过来调用了ios对象自身的setf成员函数,以此来设置格式化输出,setf字面上一看就是设置标志的意思,设置一次以后都生效,想要取消设置的标志自有unsetf对应调用。另外还有width设置宽度、fill设置填充字符、precision设置精度等。
C++新增const关键字,表示一个常量。C语言中常量通常使用define定义,define只是单纯意义的展开替换,没有类型一说,编译器就无法作类型检查,而在C++可以在定义前加上const关键字,表示这是一个常量,对于const常量在定义时必须初始化,之后便无法修改其值(仅从编译器角度限制而言),如果const常量初始化一个常量值,那么代码中所有引用它的地方都像宏一样展开替换成常量值,与宏不同一点const常量有分配空间。如果const常量初始化一个变量的值,那么编译器就不会作展开替换,而是引用该const常量存放的值。
const的常量指针与指针常量。const T*、T const*定义常量指针,常量指针可以修改其值但不能修改指针指向的内容。T* const定义指针常量,指针常量不能修改指针值但允许修改其指向的内容。还有一种const T* const,两者皆不可修改。
C++新增引用类型。引用是变量的一个别名,定义时必须初始化一个变量,想赋值常量值加const。引用可以看作是指针的一种变体,它实际上就是通过指针的方式实现的,不过在编译器上层作了限制,使用起来更安全。