ホームページ > バックエンド開発 > C++ > C ifstream を使用して、整数数が異なるテキスト ファイルから整数を効率的に読み取る方法

C ifstream を使用して、整数数が異なるテキスト ファイルから整数を効率的に読み取る方法

DDD
リリース: 2024-11-02 18:20:29
オリジナル
769 人が閲覧しました

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」イディオムを活用した 1 行の解決策があります。 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 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート