كيف تقرأ ملف ASCII بالكامل في std::string في C++؟
مرحبًا بالجميع! أنا مطور C++ مبتدئ واجهت مهمة تبدو بسيطة، لكنني لا أستطيع إيجاد حل أنيق. أحتاج إلى قراءة محتويات ملف نصي ASCII في كائن std::string، لمعالجته ككتلة بيانات واحدة (مثل تحليل الإعدادات أو التخزين المؤقت).
حاليًا أستخدم هذا الكود الضخم:
```cpp
#include
#include
#include
std::string readFile(const std::string& filename) {
std::ifstream file(filename);
std::string content;
char ch;
while (file.get(ch)) {
content += ch;
}
return content;
}
```
هذا يعمل، لكني قلق بشأن أمرين:
1. **الأداء**. الإضافة المستمرة حرفًا حرفًا بطيئة جدًا. كل استدعاء لـ `operator+=` قد يسبب إعادة تخصيص للذاكرة.
2. **جمال الكود**. في Python يمكنني كتابة `open('file.txt').read()` في سطر واحد. هل لا يوجد شيء مشابه في C++ من المكتبة القياسية؟