如何在C++中将std::string转换为小写?
大家好!我是C++新手,正在编写一个文本处理小程序。我需要将字符串中的所有字符转换为小写。我知道C语言中有中的tolower()函数,但它只适用于单个字符(int)。如何将其应用于整个std::string字符串?
我尝试编写了这样的循环:
```cpp
#include
#include
#include
int main() {
std::string str = "Hello World!";
for (int i = 0; i < str.size(); ++i) {
str[i] = tolower(str[i]);
}
std::cout << str << std::endl;
return 0;
}
```
代码可以编译,但我不确定这是否正确和安全。也许有更符合习惯的STL方法?我听说过std::transform,但不知道如何与tolower一起使用。另外,tolower接受int而不是char——char的负值会有问题吗(因为char可能是有符号的)?
请告诉我正确且高效的转换方法。