【问题标题】:How to read each integer from a text file in c++?如何从 C++ 中的文本文件中读取每个整数?
【发布时间】: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 的调用确实会导致垃圾.

标签: c++ text fstream


【解决方案1】:

第一个while循环的条件不对,试试设置

while(t1!=0 && t2!=0){

而不是

while(t1==0 && t2==0){

根据您使用的条件,您立即跳到第二个循环,整个文件被放入第二个图表中,导致第一个中的值未初始化。

希望这会有所帮助..

【讨论】:

  • 感谢您告诉我这个错误,但同样的问题仍然存在
  • 那么这可能是与图形函数相关的问题,更改代码对我来说似乎工作正常(我删除了你没有发布的代码的图形部分,只留下文件交互,并调试它工作正常)
  • 我删除了cout之后的所有代码并将t1和t2初始化为0。现在它给出0 0作为输出,这意味着file2>>t1>>t2;没有改变任何东西。
  • 我发现了问题,不用麻烦了。
  • 这有点奇怪,我的输出是1 2,这是文件的正确第一行。那么我会提出一些愚蠢的问题..你确定文件在正确的位置,可读等等..?
猜你喜欢
  • 2014-04-21
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多