为什么不将我的大写字母转换为小写?

时间:2013-01-27 15:06:23

标签: c++ debugging function pointers

  

可能重复:
  tolower() not working

这是我的代码:

char *ptr=&twod[j][i];

                 while (*ptr != '\0')
    {
        tolower(*ptr);


        cout<<endl
            <<endl
            <<endl
            <<*ptr;

        ptr++;

    }

当我讨论上述内容时,大写字母仍保持大写。有人可以向我解释原因吗?

3 个答案:

答案 0 :(得分:6)

你需要这样做:

*ptr = tolower(*ptr);

std::tolower 返回小写字母。 通过引用接受参数,因此无法修改您传递给它的*ptr

请阅读the documentation of std::tolower了解详细信息。

答案 1 :(得分:2)

tolower不会修改该值,而是返回一个新值。

试试这个:

*ptr = tolower(*ptr);

答案 2 :(得分:1)

tolower不会改变它的论点。设置变量或打印出操作:

*ptr = tolower(*ptr);
std::cout << *ptr;
// or
std::cout << tolower(*ptr);