マニピュレータは、どのように動作するのかを完全に理解することなくしばらく使用しています。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に変換することができません"を大文字に変換します。どうして? showbase
とuppercase
がstd::setiosflags()
内部でのみ、その関数の外側std::
でstd::ios::
で修飾されなければならない理由
std::cout << std::uppercase << "abcd" << '\n';
std::cout << std::setiosflags(std::ios::uppercase) << "abcd" << '\n';
もう一つの問題はありますか?
std::hex
がstd::setiosflags()
の内側に受け入れることができない理由Finalyは、