逐行读取文本文件,然后逐字逐句地读取数据

时间:2010-12-08 20:34:35

标签: c++

我的数据如下:

numbers.text

12     32     21     42

33     566    332    12

66     994    4      33

12     33     33     41

我想在整数向量上推送前三个值而忽略最后一个值。每一行我需要有一个前3个数字的新向量。只是空格用作分隔符(TAB)。谢谢!

3 个答案:

答案 0 :(得分:1)

好吧,最终你想为文本文件中的每一行最终得到std::vector<int>个3个整数。这基本上是解析文件的练习,使用C ++文件流对象和流输入迭代器非常容易。

使用std::ifstream对象打开文件。然后,您可以使用std::istream_iterator<int>迭代文件中的每个整数。这将提取每个整数,因此您可以将其存储在向量中。如果你想丢弃每一行的第四个整数,只需保留一个计数器变量,这样你就可以丢弃每个第4个值。

基本上就是这样。我会留给你实际生成代码。

答案 1 :(得分:1)

  1. 打开文件
  2. 使用std::getline()
  3. 迭代文件中的每一行
  4. 将整数解析出来并转换为向量
    1. 将行放在std::istringstream中以解析整数
    2. 从字符串流中提取三个整数
    3. 将整数推入向量
    4. 你想用矢量做什么?也许把它推进另一个载体?
  5. 注意这里发生了什么:你写了一个问题,我把它翻译成一系列指令,最后你将它翻译成代码。这就是我们编写简单程序的方式。诀窍在于充分理解这个问题,将其转化为伪代码,如上所述。

答案 2 :(得分:0)

如果您只是直接阅读文件,

std::ifstream将起作用。如果您正在使用getline(这里真的没有必要),您可以编写一个简单的拆分函数来分隔值并插入您想要的值。由于这听起来像学校作业,我怀疑你会想要使用boost::方法,这会使这件事变得相当琐碎。