«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно читать целые числа из текстового файла с различным количеством целых чисел с помощью ifstream в C++?

Как эффективно читать целые числа из текстового файла с различным количеством целых чисел с помощью ifstream в C++?

Опубликовано 20 ноября 2024 г.
Просматривать:587

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

Чтение целых чисел из текстового файла с помощью C ifstream

Извлечение и сохранение информации о смежности графов из текстового файла в вектор представляет собой проблему, когда работа со строками целочисленного количества переменных. Вот комплексное решение с использованием ifstream языка C:

Традиционный подход предполагает чтение каждой строки с помощью getline() и использование потока входной строки для анализа строки. Этот метод хорошо работает для строк с постоянным количеством целых чисел.

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

Однако, если у вас есть строки с различным числом целых чисел, существует однострочное решение, использующее цикл и идиому «оставаться», любезно предоставлено Люком Дантоном:

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

В этом фрагменте идиома «stay» гарантирует, что предоставленная ссылка lvalue останется действительной после перемещения. Этот шаг необходим для повышения эффективности, поскольку он позволяет избежать ненужного копирования символов.

Эти решения предоставляют эффективные и универсальные методы извлечения целых чисел из текстового файла и сохранения их в векторе, независимо от того, имеют ли строки согласованный или различное количество целых чисел.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3