Como converter std::string para minúsculas em C++?
Olá a todos! Sou novo em C++ e estou escrevendo um pequeno programa para processamento de texto. Preciso converter todos os caracteres de uma string para minúsculas. Eu sei que em C existe a função tolower() de , mas ela funciona apenas com caracteres individuais (int). Como posso aplicá-la a toda a string std::string?
Tentei escrever um loop assim:
```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;
}
```
O código compila, mas não tenho certeza se está correto e seguro. Talvez haja uma maneira mais idiomática usando STL? Ouvi falar sobre std::transform, mas não entendo como aplicá-lo junto com tolower. Além disso, tolower recebe int, não char — não haveria problemas com valores negativos de char (já que char pode ser signed)?
Por favor, me digam como converter de forma correta e eficiente.