标准输入输出
要使用标准输入输出,必须引入<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) | 关闭指定标志 f | I、O |
setbase(int base) | 设置数值的基本数 | O |
setfill(int ch) | 设置填充字符 | O |
setiosflags(long f) | 启用指定标志 f | I、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 |