首頁  >  文章  >  後端開發  >  如何使用 C ifstream 高效地從具有不同整數計數的文字檔案中讀取整數?

如何使用 C ifstream 高效地從具有不同整數計數的文字檔案中讀取整數?

DDD
DDD原創
2024-11-02 18:20:29751瀏覽

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

使用C ifstream 從文字檔案讀取整數

在下列情況下,從文字檔案中擷取圖鄰接資訊並將其儲存到向量中會帶來挑戰:處理可變整數計數的行。這是使用 C 的 ifstream 的全面解決方案:

傳統方法包括使用 getline() 讀取每一行並使用輸入字串流來解析該行。這種技巧對於整數數量一致的行非常有效。

<code class="cpp">#include <fstream>
#include <sstream>
#include <vector>

std::ifstream infile("text_file.txt");
std::string line;

while (std::getline(infile, line)) {
  std::istringstream iss(line);
  int n;
  std::vector<int> v;

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

  // Process the vector v
}</code>

但是,如果您的行具有不同的整數計數,則有一個利用循環和“stay”慣用法的單行解決方案,由Luc Danton 提供:

<code class="cpp">#include <sstream>
#include <iterator>
#include <vector>

int main() {
  std::vector<std::vector<int>> vv;

  for (std::string line;
       std::getline(std::cin, line);
       vv.push_back(std::vector<int>(std::istream_iterator<int>(std::move(std::istringstream(line))),
                                     std::istream_iterator<int>()))
       );

  // Process the vector of vectors vv
}</code>

在此片段中,「stay」習慣用法確保提供的左值引用在移動後仍然有效。為了提高效率,這一移動是必要的,因為它避免了不必要的字元複製。

這些解決方案提供了高效且通用的方法,用於從文字檔案中提取整數並將其儲存在向量中,無論行是否具有一致或一致不同數量的整數。

以上是如何使用 C ifstream 高效地從具有不同整數計數的文字檔案中讀取整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn