我一直在使用操纵器一段时间没有完全理解它们是如何工作的。为什么std :: uppercase不能和字符串一起工作?
此代码:
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::
该功能之外?
Finaly,为什么std::hex
无法里面std::setiosflags()
接受谢谢