【问题标题】:Read a text file in C++, saving data to integers and arrays在 C++ 中读取文本文件,将数据保存到整数和数组
【发布时间】:2014-07-23 10:33:06
【问题描述】:

我正在尝试操作具有以下类似特征的文本文件。

目标是将数据保存为 4 个整数,对应的值为 1、2、3 和 4,以及具有这 3 列和 4 行的数组。

因为文件有其他系列的 %%%,我想了解一种方法来隔离这些块之间的下一个数组(一些具有不同且不可预测的维度)。

提前感谢!

文件.txt:

文件 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 描述 %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A B C D 1 2 3 4 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 坐标 x y 1 0.00000e+00 0.00000e+00 2 1.00000e+00 0.00000e+00 3 0.00000e+00 1.00000e+00 4 2.00000e+00 2.00000e+00 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

【问题讨论】:

  • 评论%格式是什么?行首的一个表示不应读取该行?

标签: c++ arrays integer text-files


【解决方案1】:

逐行阅读。如果该行包含'%',则获取行开头的substring,不包括'%' 或之后的任何内容。去除前导和尾随空格。如果结果字符串为空,则只有 cmets,没有其他内容。

前两行非空行是名称及其编号。接下来的几行非空行是表头和实际表。

【讨论】:

  • 从示例中,我宁愿说以% 开头的任何行都是注释或% 和EOL 之间的所有内容都是注释,不是吗?
  • @Johan 在我看来也是这样。这意味着阅读了该行之后,您需要做的就是line.erase( std::find( line.begin(), line.end(), '%' ), line.end() );
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-17
  • 2017-02-18
  • 1970-01-01
相关资源
最近更新 更多