魔鬼的惊叹 发表于 2016-07-31 11:46

c++字符大小写转换

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    string s;
    while(cin>>s)
    {   
      transform(s.begin(),s.end(),s.begin(),::tolower);
      cout<<s<<endl;
    }   
    return 0;
}
有点不解tolower前面的::是干什么用的?

MMMIX 发表于 2016-07-31 15:19

回复 1# 魔鬼的惊叹


    http://en.cppreference.com/w/cpp/language/qualified_lookup

yulihua49 发表于 2016-07-31 21:30

魔鬼的惊叹 发表于 2016-07-31 11:46 static/image/common/back.gif
有点不解tolower前面的::是干什么用的?
这个不能正确处理GBK汉字,会吧汉字改变了。

cjfeii 发表于 2016-08-01 09:03

tolower 前面的::表示的应该是最上层命名空间,就是说tolower不在其他的命名空间中

cjfeii 发表于 2016-08-01 09:04

std::string 也可以写成 ::std::string

魔鬼的惊叹 发表于 2016-08-01 21:36

回复 5# cjfeii
如果我不加::编译就过不去
加上::是明确指明使用std::tolower()吗


   

cjfeii 发表于 2016-08-02 09:22

::tolower 并不是表示 std::tolower
::tolower 表示不是任意一个有名命名空间的函数,这是为了防止和其他命名空间里面的同名函数混淆。

cjfeii 发表于 2016-08-02 09:24

::tolower 表示的是全局函数,而不是某一个命名空间的函数。
页: [1]
查看完整版本: c++字符大小写转换