Я использую манипуляторы в течение некоторого времени, не полностью понимая, как они работают.Почему 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
Однако ни одна из следующих строк кода не может преобразовать строку «абвг "в верхний регистр. Зачем?
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()
Спасибо