gpt4 book ai didi

c++ - 作用域运算符的不同用法

转载 作者:太空狗 更新时间:2023-10-29 23:35:39 24 4
gpt4 key购买 nike

要将字符串转换为小写,我们可以执行以下操作:

#include <iostream>
#include <algorithm>
#include <string>
#include <cctype>
using namespace std;

int main()
{
string str("Sample STRING");

cout << str << endl;

std::transform(str.begin(), str.end(), str.begin(), ::tolower);

cout << str << endl;

return 0;
}

我知道 std::transform 是什么;但是范围运算符 :: 在函数 tolower 前面做什么?

如果我删除作用域运算符,编译器会提示函数不匹配。如果我在 :: 运算符前面添加 std,那么编译器也会提示函数不匹配。 tolower 前面的作用域运算符有什么用?我不知道它叫什么,我到处寻找解释,但无济于事。

最佳答案

  1. 你应该#include <algorithm>使用 std::transform .
  2. tolower您想要的功能在 ctype.h 中定义或 cctype .您应该包括这些 header 之一。前者声明tolower在全局命名空间中;后者在 std 中声明它命名空间。
  3. 很可能没有 :: ,您正在选择函数模板 std::tolower<locale> 中声明 header 。当然,这只会发生,因为你有 using namespace std; .这是 using namespace std; 的具体示例可能很危险。
  4. ::左边没有任何内容意味着右边的名称将“在全局范围内查找”并将找到全局 tolower而不是 std::tolower . (因此,您应该 #include <ctype.h> 以确保您获得全局声明。)

关于c++ - 作用域运算符的不同用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32387064/

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