C ifstream を使用してテキスト ファイルから整数を読み取る
グラフ隣接情報をテキスト ファイルから取得してベクトルに保存すると、次のような場合に問題が発生します。可変整数カウントの行を処理します。 C の ifstream を使用した包括的なソリューションは次のとおりです。
従来のアプローチでは、 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
}
ただし、整数の数が異なる行がある場合は、ループと「stay」イディオムを利用する 1 行の解決策があります (Luc Danton のご好意による):
#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」イディオムにより、指定された左辺値参照が移動後も有効なままであることが保証されます。この移動は、不必要な文字のコピーを避けるため、効率化のために必要です。
これらのソリューションは、行に一貫性があるかどうかに関係なく、テキスト ファイルから整数を抽出し、それらをベクトルに格納するための効率的で汎用性の高い方法を提供します。さまざまな整数。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3