"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como ler números inteiros com eficiência de um arquivo de texto com contagens de números inteiros variáveis ​​usando C++ ifstream?

Como ler números inteiros com eficiência de um arquivo de texto com contagens de números inteiros variáveis ​​usando C++ ifstream?

Publicado em 2024-11-20
Navegar:123

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

Ler inteiros de um arquivo de texto com C ifstream

Recuperar e armazenar informações de adjacência de gráfico de um arquivo de texto em um vetor apresenta um desafio quando lidando com linhas de contagem de números inteiros variáveis. Aqui está uma solução abrangente usando ifstream de C:

A abordagem tradicional envolve a leitura de cada linha usando getline() e o emprego de um fluxo de string de entrada para analisar a linha. Essa técnica funciona bem para linhas com um número consistente de números inteiros.

#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
}

No entanto, se você tiver linhas com contagens de inteiros variadas, existe uma solução de uma linha que aproveita um loop e o idioma 'stay', cortesia 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
}

Neste trecho, o idioma 'stay' garante que a referência lvalue fornecida permaneça válida após a mudança. A mudança é necessária para a eficiência, pois evita cópias desnecessárias de caracteres.

Essas soluções fornecem métodos eficientes e versáteis para extrair números inteiros de um arquivo de texto e armazená-los em um vetor, independentemente de as linhas terem uma consistência ou número variável de inteiros.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3