首页 > 后端开发 > C++ > 如何使用 C ifstream 高效地从具有不同整数计数的文本文件中读取整数?

如何使用 C ifstream 高效地从具有不同整数计数的文本文件中读取整数?

DDD
发布: 2024-11-02 18:20:29
原创
771 人浏览过

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”惯用法的单行解决方案,由 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板