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

Posted

技术标签:

【中文标题】如何将文件的内容存储在数组中?【英文标题】:How do I store contents of a file in an array? 【发布时间】:2016-06-05 08:50:43 【问题描述】:

我已经声明了一个边缘如下

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;

【问题讨论】:

先自己尝试一下 - 然后询问您是否有特定问题。 SO 不是代码编写服务。 最后一个 for 循环有问题。先生,你能帮帮我吗 【参考方案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);

编辑

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

#include <vector>

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

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

【讨论】:

以上是关于如何将文件的内容存储在数组中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件的内容添加到数组列表中

将文本文件的内容存储在数组中[重复]

C如何将.txt文件的内容放入二维数组

如何将文件中的字符存储到数组中

如何将 json 文件加载到本地存储中?

如何在将文件包含在 PHP 中之前安全地评估文件的内容