【发布时间】:2014-03-07 14:31:30
【问题描述】:
程序停止工作,因为它没有正确读取文本文件。 文本文件有以下内容:
1 2
1 3
1 4
2 4
3 4
0 0
1 2
3 2
我想从文本文件中得到两张图,0 0 将两者分开。
提前致谢。
int main()
{
ifstream file2;
file2.open("ass3.txt");
int i=1;
int t1;
int t2;
file2>>t1>>t2;
Graph* graph1;
Vertex* u;
Vertex* v;
cout<<t1<<" "<<t2;//this is giving value -2 and some other random number.
while(t1==0 && t2==0){
if(t1==i){
u=addVertex(t1);
insert(u,graph1);
i++;
}
if(t2==i){
u=addVertex(t1);
insert(u,graph1);
i++;
}
*u = graph1->vertices[t1];
*v = graph1->vertices[t2];
addEdge(u, v, true);
addEdge(v, u, false);
file2>>t1>>t2;
}
Graph* graph2;
i=0;
while (!file2.eof()){
file2>>t1>>t2;
if(t1==i){
u=addVertex(t1);
insert(u,graph2);
i++;
}
if(t2==i){
u=addVertex(t1);
insert(u,graph2);
i++;
}
*u = graph1->vertices[t1];
*v = graph1->vertices[t2];
addEdge(u, v, true);
addEdge(v, u, false);
}
return 1;
}
【问题讨论】:
-
到目前为止,您已经为我们提供了对该问题的粗略描述。说程序“不工作”还不足以理解问题所在。
-
我在代码中添加了一个 cout 并且还编写了输出。如果我能更具体一点,我会自己解决问题。
-
我们的目标是使问题尽可能清晰简洁。这包括将代码的大小减少到最简单的示例,以重现您描述的问题。 See here.
-
您确定文件 ass3.txt 存在并且可读吗?你的代码对我有用。您可以通过查询 file2.rdstate() & std::ifstream::failbit == 0 来检查文件是否正确打开。当文件不存在时,对 file2 >> t1 >> t2 的调用确实会导致垃圾.