c++ 之 cout
1.进制转换
1. 1 进制转换
- 默认十进制:
cout
默认输出十进制。 - 十六进制:使用
hex
操纵符。 - 八进制:使用
oct
操纵符。 - 恢复十进制:使用
dec
操纵符。
#include <iostream>
using namespace std;int main() {int num = 30;cout << "十进制: " << num << endl; // 输出 30cout << "十六进制: " << hex << num << endl; // 输出 1ecout << "八进制: " << oct << num << endl; // 输出 36cout << "恢复十进制: " << dec << num << endl; // 输出 30return 0;
}
1.2 显示进制前缀
使用 showbase
显示进制标识符:
- 十六进制前缀
0x
- 八进制前缀
0
#include <iostream>
using namespace std;int main() {int num = 30;cout << showbase;cout << "十六进制(带前缀): " << hex << num << endl; // 输出 0x1ecout << "八进制(带前缀): " << oct << num << endl; // 输出 036return 0;
}
2. 设置输出宽度
2.1 设置输出宽度
使用 setw(n)
设置字段宽度(需包含 <iomanip>
头文件):
- 仅影响下一个输出项。
- 默认右对齐,不足部分填充空格。
#include <iostream>
#include <iomanip>
using namespace std;int main() {cout << "宽度为5: " << setw(5) << 123 << endl; // 输出 " 123"return 0;
}
2.2 设置填充字符
使用 setfill(c)
设置填充字符:
- 影响后续所有输出,直到再次更改。
#include <iostream>
#include <iomanip>
using namespace std;int main() {cout << setfill('0');cout << setw(5) << 123 << endl; // 输出 "00123"return 0;
}
2.3 对齐方式
- 左对齐:
left
- 右对齐:
right
(默认)
#include <iostream>
#include <iomanip>
using namespace std;int main() {cout << left << setw(5) << 123 << endl; // 输出 "123 "cout << right << setw(5) << 123 << endl; // 输出 " 123"return 0;
}
3. 组合使用
结合进制、宽度、填充和对齐:
#include <iostream>
#include <iomanip>
using namespace std;int main() {int num = 255;// 十六进制,宽度8,左对齐,填充'*',显示前缀cout << showbase << hex << left << setfill('*') << setw(8) << num << endl;// 输出 "0xff****"// 八进制,宽度6,右对齐,填充'0',显示前缀cout << showbase << oct << right << setfill('0') << setw(6) << num << endl;// 输出 "000377"return 0;
}