尝试从文本文件中读取图邻接信息时,可能会遇到以不同数量的整数结尾的行'n'。由于整数数量不一致,使用 getline() 方法单独检索每一行给准确解析每一行带来了挑战。人们正在寻求解决这个问题的策略,并将这些值有效地存储在向量中。
传统方法要求迭代 getline() 读取的每一行,并利用 istringstream 对象来解析每一行。当顺序读取整数时,它们可以附加到向量中,然后可以根据需要进一步操作该向量。以下代码举例说明了这种方法:
<code class="cpp">#include <fstream> #include <sstream> #include <string> #include <vector> int main() { std::ifstream infile("thefile.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); } // Do something with v } }</code>
另一种解决方案涉及单行 for 循环。通过利用 istream_iterator 类,我们可以将值直接读取到向量中,从而减少对中间容器的需求。还使用了辅助函数来防止 std::move 可能出现的潜在悬空引用。
<code class="cpp">#include <fstream> #include <string> #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::stay(std::istringstream(line))), std::istream_iterator<int>()) ) ) { } }</code>
以上是如何在 C 中有效地将具有不同计数的文本文件中的整数解析为向量?的详细内容。更多信息请关注PHP中文网其他相关文章!