C++ 标准库 <iomanip>
<iomanip>
是 C++ 标准库中的一个头文件,它提供了对输入/输出流的格式化操作。
iomanip
库中的函数允许开发者控制输出格式,如设置小数点后的位数、设置宽度、对齐方式等。
iomanip
是 Input/Output Manipulators 的缩写,它提供了一组操作符,用于控制 C++ 标准库中的输入/输出流的格式。
语法
iomanip
库中的函数通常与 <<
和 >>
操作符一起使用,以实现对输出流的控制。以下是一些常用的 iomanip
函数:
setw(int)
setprecision(int)
fixed
scientific
setiosflags(ios_base::fmtflags)
resetiosflags(ios_base::fmtflags)
setfill(char)
实例
1. 设置宽度
使用 setw
可以设置输出的宽度。如果输出内容的字符数少于设置的宽度,剩余部分将用空格填充。
实例
#include <iostream>
#include <iomanip>
int main() {
std::cout << std::setw(10) << "Hello" << std::endl;
return 0;
}
#include <iomanip>
int main() {
std::cout << std::setw(10) << "Hello" << std::endl;
return 0;
}
输出结果:
Hello
2. 设置精度
使用 setprecision
可以设置浮点数的小数点后的位数。
实例
#include <iostream>
#include <iomanip>
int main() {
double pi = 3.14159265358979323846;
std::cout << std::setprecision(2) << pi << std::endl;
return 0;
}
#include <iomanip>
int main() {
double pi = 3.14159265358979323846;
std::cout << std::setprecision(2) << pi << std::endl;
return 0;
}
输出结果:
3.14
3. 固定小数点和科学计数法
fixed
和 scientific
可以控制浮点数的输出格式。
实例
#include <iostream>
#include <iomanip>
int main() {
double num = 123456789.0;
std::cout << "Fixed: " << std::fixed << num << std::endl;
std::cout << "Scientific: " << std::scientific << num << std::endl;
return 0;
}
#include <iomanip>
int main() {
double num = 123456789.0;
std::cout << "Fixed: " << std::fixed << num << std::endl;
std::cout << "Scientific: " << std::scientific << num << std::endl;
return 0;
}
输出结果:
Fixed: 123456789.000000 Scientific: 1.23456789e+08
4. 设置填充字符
使用 setfill
可以设置填充字符,通常与 setw
一起使用。
实例
#include <iostream>
#include <iomanip>
int main() {
std::cout << std::setfill('*') << std::setw(10) << "World" << std::endl;
return 0;
}
#include <iomanip>
int main() {
std::cout << std::setfill('*') << std::setw(10) << "World" << std::endl;
return 0;
}
输出结果:
*****World
5. 设置和重置格式标志
setiosflags
和 resetiosflags
可以设置或重置流的格式标志。
实例
#include <iostream>
#include <iomanip>
int main() {
std::cout << std::setiosflags(std::ios::uppercase) << std::hex << 255 << std::endl;
std::cout << std::resetiosflags(std::ios::uppercase) << std::hex << 255 << std::endl;
return 0;
}
#include <iomanip>
int main() {
std::cout << std::setiosflags(std::ios::uppercase) << std::hex << 255 << std::endl;
std::cout << std::resetiosflags(std::ios::uppercase) << std::hex << 255 << std::endl;
return 0;
}
输出结果:
FF ff