当我为初学者阅读一些 C++ 示例代码时,我对以下行中 toupper 的用法感到困惑:

std::transform(data.begin(), data.end(), data.begin(), ::toupper);

从上面的行中,我知道“转换”来自命名空间 std ,但我不知道 toupper 来自哪个命名空间。也许 c++ 有一个默认的命名空间,但是
这只是我的猜测。那么你能在这里向我解释一下 toupper 的用法吗?

最佳答案

如果你包括

<cctype>

然后 toupper() 在命名空间 std 中。如果你包括
<ctype.h>

然后 toupper() 在全局命名空间中。 (如果未在特定 namespace 中定义,则所有内容都会结束。当您在特定 namespace 中时,您使用前导 :: 引用的那个。)

相同的规则适用于 <cstring><string.h><cstdlib><stdlib.h> 等。

关于c++ - toupper 属于哪个命名空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1523888/

10-16 05:31