标准输入输出
要使用标准输入输出,必须引入<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 |