我想对向量进行排序,以便大写字母跟随小写字母。如果我有类似的东西
This is a test
this is a test
Cats
cats
this thing
我希望输出是
cats
Cats
this is a test
This is a test
this thing
标准库排序将输出
Cats
This is a test
cats
this is a test
this thing
我想将谓词传递给 std::sort ,以便它比较我作为参数传递的字符串的小写版本。
bool compare(std::string x, std::string y)
{
return lowercase(x) < lowercase(y);
}
我尝试降低函数中的每个字符,然后进行比较,但没有奏效。我想通过其他方法将字符串转换为小写来测试这种方法。如何将字符串转换为小写?
编辑::
其实我发现了问题。这行得通。当我第一次编写函数时,ref = tolower(ref)
我tolower(ref)
没有重新分配,ref
所以它什么也没做。
bool compare(std::string x, std::string y)
{
for(auto &ref:x)
ref = tolower(ref);
for(auto &ref:y)
ref = tolower(ref);
return x < y;
}
编辑::
这段代码实际上有时会先排序大写字母,有时会先排序大写字母,因此并不能完全解决问题。