Leer archivo línea por línea usando ifstream en C++
El contenido del archivo.txt es:
5 3
6 4
7 1
10 5
11 6
12 3
12 4
¿ Dónde 5 3
hay un par de coordenadas? ¿Cómo proceso estos datos línea por línea en C++?
Puedo obtener la primera línea, pero ¿cómo obtengo la siguiente línea del archivo?
ifstream myfile;
myfile.open ("file.txt");
Primero, haz un ifstream
:
#include <fstream>
std::ifstream infile("thefile.txt");
Los dos métodos estándar son:
Supongamos que cada línea consta de dos números y lea token por token:
int a, b; while (infile >> a >> b) { // process pair (a,b) }
Análisis basado en líneas, utilizando secuencias de cadenas:
#include <sstream> #include <string> std::string line; while (std::getline(infile, line)) { std::istringstream iss(line); int a, b; if (!(iss >> a >> b)) { break; } // error // process pair (a,b) }
No debe mezclar (1) y (2), ya que el análisis basado en tokens no devora nuevas líneas, por lo que puede terminar con líneas vacías falsas si las usa getline()
después de que la extracción basada en tokens lo haya llevado al final de un línea ya.
Úselo ifstream
para leer datos de un archivo:
std::ifstream input( "filename.ext" );
Si realmente necesitas leer línea por línea, haz esto:
for( std::string line; getline( input, line ); )
{
...for each line in input...
}
Pero probablemente sólo necesites extraer pares de coordenadas:
int x, y;
input >> x >> y;
Actualizar:
En su código usa ofstream myfile;
, sin embargo, o
in ofstream
significa output
. Si desea leer del archivo (entrada), utilice ifstream
. Si desea leer y escribir, utilice fstream
.