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.
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