如何将文件的内容存储在数组中?
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;
【讨论】:
以上是关于如何将文件的内容存储在数组中?的主要内容,如果未能解决你的问题,请参考以下文章