Home >Backend Development >C++ >How to Parse Integers from a Text File in C with ifstream?

How to Parse Integers from a Text File in C with ifstream?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-29 13:18:29333browse

How to Parse Integers from a Text File in C   with ifstream?

Parsing Integers from a Text File in C Using ifstream

In the realm of programming, working with files is a common necessity. One such task involves reading integers from a text file for data analysis or graph construction. Yet, when faced with a text file containing an unknown number of lines, each consisting of a varying number of integers, parsing becomes a challenge.

To address this problem, we can employ the trusty ifstream class and std::getline() function to read lines from the text file. However, line parsing poses a new hurdle. To overcome this, let us delve into two effective approaches:

Using StringStream and While Loop:

This method utilizes the istringstream constructor to parse a line. It reads integers within a while loop, appending them to a vector until newline is encountered:

<code class="cpp">while (std::getline(infile, line))
{
  std::istringstream iss(line);
  int n;
  std::vector<int> v;

  while (iss >> n)
  {
    v.push_back(n);
  }

  // Utilize the parsed integer vector 'v' for your desired purpose
}</code>

One-Line Solution with std::move:

For a more streamlined approach, we can employ a combination of std::move() and a for loop:

<code class="cpp">for (std::string line;
     std::getline(std::cin, line);
     vv.push_back(std::vector<int>(std::istream_iterator<int>(std::stay(std::istringstream(line))),
                                 std::istream_iterator<int>()))
    ) { }</code>

This solution utilizes the std::stay() function to retain ownership of the input stream, enabling use within the for loop. It iterates over the lines, using std::istream_iterator to parse integers into vector>.

The above is the detailed content of How to Parse Integers from a Text File in C with ifstream?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn