标准输入输出

要使用标准输入输出,必须引入<iostream>头文件。

对象cout是连接到标准输出设备的iostream实例,与操作符<<结合使用。cout对象放置在<<操作符左侧。<<运算符可以用来输出各种内置类型,如果需要输出自定义类型,需要进行重载。以下是一个使用cout进行输出的示例。

std::cout << "Hello, " << person << std::endl;

示例中的std::endl表示一个换行符。

对象cin是连接到标准输入设备的iostream实例,与操作符>>结合使用。cin可以在用户进行输入并回车之后进行捕获。C++编译器会根据要输入值的数据类型来选择合适的运算符来提取值。>>运算符可以在一个语句中多次使用。以下是一个使用cin进行输入的示例。

std::cin >> name >> age;

<iomanip>中提供了多个函数可以用来注入流中来对标准输入输出进行控制。主要有以下函数。

函数功能适用
resetiosflags(long f)关闭指定标志 fI、O
setbase(int base)设置数值的基本数O
setfill(int ch)设置填充字符O
setiosflags(long f)启用指定标志 fI、O
setprecision(int p)设置数值的精度O
setw(int w)设置域宽度O

cout中的方法cout.setf()cout.precision()cout.unsetf()分别对应<iomanip>中的setiosflags()setprecision()resetiosflags()。这些函数中常用来操作的标志有以下这些:

标志功能
ios::boolalpha使用英文单词输出布尔值
ios::oct使用八进制输出数值
ios::dec使用十进制输出数值
ios::hex使用十六进制输出数值
ios::left输出调整为左对齐
ios::right输出调整为右对齐
ios::scientific使用科学记数法显示浮点数
ios::fixed使用自然记数法显示浮点数
ios::showbase显示数值的基数
ios::showpoint显示小数点和额外的零
ios::showpos在非负数前显示+
ios::skipws读取时跳过空白字符
ios::unitbuf每次插入内容后清空缓冲区
ios::internal将填充字符放到符号和数值之间
ios::uppercase使用大写形式输出标记字符

以上标志可以使用|进行拼合。

<iostream>中定义了以下内容可以用来直接注入到流中。

操作符功能适用
std::boolalpha启用boolalpha标志I、O
std::dec启用dec标志I、O
std::endl输出换行符,清空缓冲区O
std::ends输出空字符O
std::fixed启用fixed标志O
std::flush清空流O
std::hex启用hex标志I、O
std::internal启用internal标志O
std::left启用left标志O
std::noboolaplha关闭boolalpha标志I、O
std::noshowbase关闭showbase标志O
std::noshowpoint关闭showpoint标志O
std::noshowpos关闭showpos标志O
std::noskipws关闭skipws标志I
std::nounitbuf关闭unitbuf标志O
std::nouppercase关闭uppercase标志O
std::oct启用oct标志I、O
std::right启用right标志O
std::scientific启用scientific标志O
std::showbase启用showbase标志O
std::showpoint启用showpoint标志O
std::showpos启用showpos标志O
std::skipws启用skipws标志I
std::unitbuf启用unitbuf标志O
std::uppercase启用uppercase标志O
std::ws跳过全部前导空白字符I