我一直在使用操縱器一段時間沒有完全理解它們是如何工作的。爲什麼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()
接受謝謝