gpt4 book ai didi

c++ - 为什么 std::uppercase 不适用于字符串?

转载 作者:太空狗 更新时间:2023-10-29 19:57:07 25 4
gpt4 key购买 nike

我使用操纵器已有一段时间了,但并未完全理解它们的工作原理。

这段代码:

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';

另一个问题是为什么 showbaseuppercase 必须在 std::setiosflags( ) 并且仅在该函数之外使用 std::

最后,为什么 std::hex 不能在 std::setiosflags() 中被接受

谢谢

最佳答案

阅读 std::uppercase 的文档.

Enables the use of uppercase characters in floating-point and hexadecimal integer output.

std::ios_base::hexstd::setiosflags 接受在docs 中有一个示例.

这里是 std::uppercase 的例子:

#include <iostream>
int main()
{
std::cout << std::hex << std::showbase
<< "0x2a with uppercase: " << std::uppercase << 0x2a << '\n'
<< "0x2a with nouppercase: " << std::nouppercase << 0x2a << '\n'
<< "1e-10 with uppercase: " << std::uppercase << 1e-10 << '\n'
<< "1e-10 with nouppercase: " << std::nouppercase << 1e-10 << '\n';
}

这里是 std::setiosflags 的例子:

#include <iostream>
#include <iomanip>

int main()
{
std::cout << std::resetiosflags(std::ios_base::dec)
<< std::setiosflags( std::ios_base::hex
| std::ios_base::uppercase
| std::ios_base::showbase) << 42 << '\n';
}

定义:

std::hex 定义为 std::ios_base& hex( std::ios_base& str );

std::ios_base::hex 定义为 static constexpr fmtflags hex =/*...*/;

关于c++ - 为什么 std::uppercase 不适用于字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com