一段时间以来,我一直在使用机械手,但并没有完全理解它们是如何工作的。
这段代码:
std::cout << std::hex << std::showbase;
std::cout << std::uppercase << 77 << '\n';
std::cout << std::nouppercase << 77 << '\n';
或者这样:
std::cout << std::hex;
std::cout << std::setiosflags(std::ios::showbase | std::ios::uppercase) << 77 << '\n';
std::cout << std::nouppercase << 77 << '\n';
两者都输出:
0X4D // 'X' and 'D' uppercase
0x4d // 'x' and 'd' lowercase
但是,以下代码行都不能将字符串“abcd”转换为大写。为什么?
std::cout << std::uppercase << "abcd" << '\n';
std::cout << std::setiosflags(std::ios::uppercase) << "abcd" << '\n';
另一个问题是为什么showbase
并且uppercase
必须在std::ios::
内部限定std::setiosflags()
且仅std::
在该功能外部限定?
最后,为什么std::hex
里面不能接受std::setiosflags()
谢谢