"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo leer eficientemente números enteros de un archivo de texto con recuentos de enteros variables usando C++ ifstream?

¿Cómo leer eficientemente números enteros de un archivo de texto con recuentos de enteros variables usando C++ ifstream?

Publicado el 2024-11-20
Navegar:105

How to Efficiently Read Integers from a Text File with Varying Integer Counts Using C   ifstream?

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.

Último tutorial Más>

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