将std :: string转换为小写内部函数

时间:2016-12-08 13:45:07

标签: c++

我需要一个快速的便携式功能,可以将字符串转换为小写字母。经过研究,我想出了这个代码,遗憾的是它不起作用。

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;
void low_string(string);
int main()
{
            string lower = "This is MIX case TEST";
            low_string(lower);
            cout << lower;
            return 0;
}
void low_string(string lower)
{
    transform(lower.begin(), lower.end(), lower.begin(), ::tolower);
}

字符串仍然是大写的。我认为它必须与引用传​​递等做一些事情,但对我不知道的语言是新的。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您正在按值传递字符串,因此函数中的参数lower实际上是lower中参数main的副本。

将您的代码更改为void low_string(string& lower),它应该可以正常工作

答案 1 :(得分:2)

您正在修改字符串的副本,而不是字符串本身。 您应该考虑通过引用传递:

void low_string(string & lower)
{
    transform(lower.begin(), lower.end(), lower.begin(), ::tolower);
}