2012-02-17 14 views
0

我有一个文本文件,它看起来像这样:使用函数getline和istringstream从文件中读取是生产零

6 
1 2 3 4 5 6 
1 2 
1 4 
1 5 
2 3 
2 5 
2 6 
3 4 
3 6 
4 5 
5 6 

我使用以下方法来读取文件的线在我的变量和数组:

​​

在上述a的代码是一个int,bc是INT阵列,in是一个IStream操作者和linestd::string。看来,当我std::cout变量和数组,我得到以下做工精细但是:

6 
1,2,3,4,5,6 
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 

出于某种原因,阵列c似乎充满了零,而不是从文件中的数据。这对我来说很奇怪,因为我正在以同样的方式阅读前两行,而且他们似乎阅读得很好。有任何想法吗?

+0

如果你改变了行'会发生什么,而(!in.eof())''到时(在)'? – wilhelmtell 2012-02-17 01:28:37

+0

@wilhelmtell对所做的更改进行相同的结果。 – 2012-02-17 01:30:35

+0

适用于我......您的数据文件和代码是否为复制粘贴? – 2012-02-17 01:37:47

回答

0

我终于想通了,我想我会在这里发布给未来的人。我结束了实现下面的功能,它工作正常。

// declare the variables to be used 
    int a, b, c, d, e; 
    std::string line; 

    // open file for reading 
    in.open(file); 

    in >> a; 
    std::cout << a << '\n'; 

    for(int i=0; i<a; ++i) 
     in >> b 

    in >> c; 

    for(int i = 0; i < c; ++i) 
    {  
     in >> d >> e; 

     // push to vector here 
    } 

    in.close(); 
相关问题