c++ - txt - leer un archivo y guardarlo en un arreglo c
¿Cómo leer línea por línea o un archivo de texto completo a la vez? (5)
Estoy en un tutorial que introduce archivos (cómo leer y escribir de / a archivo)
En primer lugar, esto no es una tarea, esto es solo ayuda general que estoy buscando.
Sé cómo leer una palabra a la vez, pero no sé cómo leer una línea a la vez o cómo leer todo el archivo de texto.
¿Qué pasa si mi archivo contiene 1000 palabras? No es práctico leer cada palabra.
Mi archivo de texto llamado (Leer) contiene lo siguiente:
Me encanta jugar juegos Me encanta leer Tengo 2 libros
Esto es lo que he logrado hasta ahora:
#include <iostream>
#include <fstream>
using namespace std;
int main (){
ifstream inFile;
inFile.open("Read.txt");
inFile >>
¿Hay alguna manera posible de leer todo el archivo a la vez, en lugar de leer cada línea o cada palabra por separado?
Bueno, para hacer esto también se puede usar la función freopen proporcionada en C ++ - http://www.cplusplus.com/reference/cstdio/freopen/ y leer el archivo línea por línea de la siguiente manera:
#include<cstdio>
#include<iostream>
using namespace std;
int main(){
freopen("path to file", "rb", stdin);
string line;
while(getline(cin, line))
cout << line << endl;
return 0;
}
Creo que podrías usar la función istream .read (). Puede simplemente hacer un bucle con un tamaño de fragmento razonable y leer directamente en el búfer de memoria, y luego anexarlo a algún tipo de contenedor de memoria arbitrario (como std :: vector). Podría escribir un ejemplo, pero dudo que quiera una solución completa; por favor, avíseme si necesita información adicional.
Otro método que aún no se ha mencionado es std::vector
.
std::vector<std::string> line;
while(file >> mystr)
{
line.push_back(mystr);
}
Luego, simplemente puede iterar sobre el vector y modificar / extraer lo que necesita /
Puedes usar std::getline
:
#include <fstream>
#include <string>
int main()
{
std::ifstream file("Read.txt");
std::string str;
while (std::getline(file, str))
{
// Process str
}
}
También tenga en cuenta que es mejor que solo construya la secuencia de archivos con los nombres de los archivos en su constructor en lugar de abrirlos explícitamente (lo mismo ocurre con el cierre, simplemente deje que el destructor haga el trabajo).
Se puede leer documentación adicional sobre std::string::getline()
en Referencia de CPP .
Probablemente la forma más fácil de leer un archivo de texto completo sea concatenar esas líneas recuperadas.
std::ifstream file("Read.txt");
std::string str;
std::string file_contents;
while (std::getline(file, str))
{
file_contents += str;
file_contents.push_back(''/n'');
}
Sé que este es un hilo realmente muy viejo, pero me gustaría señalar otra manera que es realmente muy simple ... Este es un código de muestra:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream file("filename.txt");
string content;
while(file >> content) {
cout << content << '' '';
}
return 0;
}