Cómo leer todo un archivo ASCII en std::string en C++?
¡Hola a todos! Soy un desarrollador principiante de C++ y me encontré con una tarea que parece simple, pero no puedo encontrar una solución elegante. Necesito leer el contenido de un archivo de texto ASCII en un objeto std::string para luego procesarlo como un bloque único de datos (por ejemplo, para parsear una configuración o almacenarlo en caché).
Actualmente estoy usando este código monstruoso:
```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;
}
```
Esto funciona, pero me preocupan dos cosas:
1. **Rendimiento**. Agregar constantemente un carácter a la vez es terriblemente lento. Cada llamada a `operator+=` puede provocar una reasignación de memoria.
2. **Elegancia del código**. En Python puedo escribir `open('file.txt').read()` en una sola línea. ¿Acaso en C++ no hay algo similar en la biblioteca estándar?