كيفية تحويل سلسلة std::string إلى أحرف صغيرة في C++؟
مرحبًا أيها الزملاء!
أنا جديد في C++ (كنت أكتب بلغة Python سابقًا) وقد واجهت مهمة تبدو بسيطة: أحتاج إلى تحويل جميع الأحرف في كائن std::string إلى أحرف صغيرة. في Python، أكتب ببساطة "HELLO".lower() وينتهي الأمر. لكن في C++، أنا في حيرة.
هذا هو الكود الخاص بي الذي لا يعمل:
```cpp
#include
#include
int main() {
std::string text = "HELLO WORLD!";
std::string lower_text = std::tolower(text); // خطأ!
std::cout << lower_text << std::endl;
return 0;
}
```
المترجم يعطي خطأ: `cannot convert 'std::string' to 'int' for argument '1' to 'int tolower(int)'`. لقد فهمت أن `std::tolower` يعمل فقط مع الأحرف الفردية (من نوع `int`)، وليس مع السلسلة بأكملها.
حاولت كتابة حلقة يدويًا:
```cpp
for (size_t i = 0; i < text.length(); ++i) {
text[i] = std::tolower(text[i]);
}
```
هذا يعمل، لكنه يبدو لي معقدًا وقبيحًا. هل هناك طريقة قياسية في C++ لفعل ذلك بسطر واحد؟