使用 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中文网其他相关文章!