Comment convertir une chaîne std::string en minuscules en C++ ?
Bonjour, collègues !
Je suis nouveau en C++ (avant j'écrivais en Python) et j'ai rencontré une tâche apparemment simple : je dois convertir tous les caractères d'un objet std::string en minuscules. En Python, j'écris simplement "HELLO".lower() et c'est fait. Mais en C++, je suis perplexe.
Voici mon code qui ne fonctionne pas :
```cpp
#include
#include
int main() {
std::string text = "HELLO WORLD!";
std::string lower_text = std::tolower(text); // Erreur !
std::cout << lower_text << std::endl;
return 0;
}
```
Le compilateur donne une erreur : `cannot convert 'std::string' to 'int' for argument '1' to 'int tolower(int)'`. J'ai compris que `std::tolower` ne fonctionne qu'avec des caractères individuels (type `int`), pas avec une chaîne entière.
J'ai essayé d'écrire une boucle manuellement :
```cpp
for (size_t i = 0; i < text.length(); ++i) {
text[i] = std::tolower(text[i]);
}
```
Cela fonctionne, mais cela me semble trop lourd et pas élégant. Existe-t-il en C++ un moyen standard de faire cela en une seule fois ?