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 サイトの他の関連記事を参照してください。