如何将文件的内容存储在数组中?

时间:2016-06-05 08:50:43

标签: c++ arrays file

我已声明如下边缘

typedef std::pair<int, int> Edge;

我的边缘从文件中读取并存储在edge_array []

Edge edge_array[] = { Edge(A, C), Edge(B, B), Edge(B, D), Edge(B, E),
        Edge(C, B), Edge(C, D), Edge(D, E), Edge(E, A), Edge(E, B)
      };

输入文件就像....

A C 1
B B 2
B D 3

阅读我使用的图表

for(int i=1;i<=num_arcs;i++)
    {
        int f;
        int s,w;
        infile >> f>> s>>w;
        cout<<f<<s<<endl;
     }

帮助我将这些边缘细节存储在edge_array中,如上所示。

完整的源代码是:

    #include <boost/graph/adjacency_list.hpp>
#include <fstream>
#include <boost/graph/graphviz.hpp>
using namespace std;
using namespace boost;
int main(){
    typedef adjacency_list <listS, vecS, directedS,
            no_property, property < edge_weight_t, int > > Graph;
    typedef graph_traits<Graph>::vertex_descriptor vertex_descriptor;
    typedef boost::graph_traits <Graph>::edge_iterator edgeIt;
    typedef boost::graph_traits<Graph>::vertex_iterator vertexIt;
    typedef std::pair<int, int> Edge;

    Graph G;
    std::ifstream infile("di1.dat");
    int num_arcs;

    if(infile >> num_arcs){
        std::cout << num_arcs << endl;
    }
    std::vector<Edge> edge_array;
    for(int i=0;i<=num_arcs;i++)
    {
        int f;
        int s,w;
        infile >> f>> s>>w;
        Edge E(f, s);
        edge_array.push_back(E);

    }
 for(int j=0;j<num_arcs;j++){
        cout<<edge_array[j]<<" ";

}
return 0;
}

1 个答案:

答案 0 :(得分:1)

使用向量存储数据:

std::vector<Edge> edge_array;

然后阅读文件

for(int i=1; i<=edges; i++){
    infile >> f >> s >> w;
    Edge E(f, s);
    edge_array.push_back(E);
}

修改

第一个可能的问题:你没有包含vector

#include <vector>

第二个可能的问题:cout无法打印一对

cout << edge_array[j].first << ", " << edge_array[j].second << endl;