【问题标题】:C++ Reading a file line by line with delimiter and store data into a listC ++使用分隔符逐行读取文件并将数据存储到列表中
【发布时间】:2015-12-14 17:40:21
【问题描述】:

我有一个名为 Task 的类

//Attributes


int earliestStartingTime, earliestEndTime, latestStartingTime, latestEndTime, duration, differ;
char TaskPosition;
list<Task*> predecessors;
list<Task*> successors;


//Constructor

 Task::Task(char TaskPosition2, int duration, list<Task*> predecessors)
 {
      this-> TaskPosition = TaskPosition2;
      this -> duration = duration; 
      for(list<Task*>::iterator it = this-> predecessors(); it != this->predecessors.end(); it++)
      {
           this-> predecessors.push_back(*it);
      }
  }

我正在尝试逐行读取文件并将数据存储到列表任务中。

在文件中,数据是这样存储的

A(3)

B(4),A

C(2),A

E(5),A

G(3),A

J(8),B,H

H(7),C,E,G

I(6),G

F(5),H

M(4),我 ...

我希望能够将它们添加到任务列表中,如下所示

Task(char TaskPosition, int duration, 列出前辈) 比如:

A是任务位置

3 是持续时间

没有前任

B是任务位置

4 是持续时间

A是前任

... J是任务位置

8 是持续时间

B,H是J的前身

等等。

稍后我将对该列表进行一些计算,例如,从 A 到 Z 的最短路径是什么......

但我仍然坚持阅读文件并将它们添加到列表中。

这是我目前所拥有的。

   int _tmain(int argc, _TCHAR* argv[])

   {
    string line;
    list< Task>* allTask  = new list<Task>;

    const string file = "Test01.txt";  // text file


    ifstream file;

    if(file.is_open())
    {
       while(getline(file, line, ','))
       {
           allTask.push_back(line);     
        }
    }
 }

这一行

    allTask.push_back(line);    

正在给我一条错误消息,

  the lest side of .push_back must have class/struct/union

所以我不知道该怎么办了。任何人都可以帮我弄清楚如何读取文件,请将数据添加到列表中。

谢谢

【问题讨论】:

  • list&lt; Task&gt;* allTask = new list&lt;Task&gt;; 跟着我慢慢重复,带着感觉:C++ 不是 Java(或 C#)。这里不需要new 或指针(这就是让你感到困惑的地方:使用指针,然后期望它在语法上像对象一样)。

标签: c++ list file push-back


【解决方案1】:

allTask 是一个指针,所以你必须使用-&gt; 才能直接使用成员函数。尽管没有理由将 allTask 作为指针,但不要更改它。你可以简单地使用

list< Task> allTask;

现在allTask 是一个自动对象,您可以使用. 来调用它的成员函数。

【讨论】:

    【解决方案2】:

    您可能会很好地阅读并可能使用序列化反序列化库。这将完全满足您的要求,并让您深入了解如何以传统方式进行操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多