Leer números enteros de un archivo de texto con C ifstream
Recuperar y almacenar información de adyacencia de gráficos de un archivo de texto en un vector presenta un desafío cuando Tratar con líneas de recuento de enteros variables. Aquí hay una solución integral que usa ifstream de C:
El enfoque tradicional implica leer cada línea usando getline() y emplear un flujo de cadena de entrada para analizar la línea. Esta técnica funciona bien para líneas con un número constante de números enteros.
#include
#include
#include
std::ifstream infile("text_file.txt");
std::string line;
while (std::getline(infile, line)) {
std::istringstream iss(line);
int n;
std::vector v;
while (iss >> n) {
v.push_back(n);
}
// Process the vector v
}
Sin embargo, si tiene líneas con distintos recuentos de enteros, existe una solución de una sola línea que aprovecha un bucle y el modismo "permanecer", cortesía de Luc Danton:
#include
#include
#include
int main() {
std::vector<:vector>> vv;
for (std::string line;
std::getline(std::cin, line);
vv.push_back(std::vector(std::istream_iterator(std::move(std::istringstream(line))),
std::istream_iterator()))
);
// Process the vector of vectors vv
}
En este fragmento, el modismo 'permanecer' garantiza que la referencia de valor l proporcionada siga siendo válida después del movimiento. El movimiento es necesario para lograr eficiencia, ya que evita la copia innecesaria de caracteres.
Estas soluciones proporcionan métodos eficientes y versátiles para extraer números enteros de un archivo de texto y almacenarlos en un vector, independientemente de si las líneas tienen una secuencia consistente o número variable de números enteros.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3