当我尝试将文件读入整数向量时没有任何反应

问题描述 投票:0回答:0

主要问题是当我尝试将数据从文件读取到向量中时没有任何反应。
我正在创建一个

Graph
类,我的任务是从一个文件创建一个图形,但是例如,这是我的小调试代码:

int main()
{
    const char* fl ="Data";
    vector<int> nodes;
    ifstream file(fl);
    istream_iterator<int> start(file), end;
    vector<int> read_data(start, end);
    nodes = read_data;
    cout<<nodes[0];
}

Data.txt 包含:

20
0 1 17
0 2 2
0 3 9
0 4 24
0 5 28

所以基本上,7 行代码会在控制台中打印 20,对吗? 出于某种原因,不,在两个 IDE 中什么都没有发生,而且我得到一个错误,因为向量是空的。 我快把自己逼疯了,因为我在在线 C++ 编译器 OnlineGDB 中尝试了相同的代码,而且它有效!

我用了

!file.fail()
检查,效果很好。 在 VS 和 Rider 中,
nodes
向量的大小为零(没有变化)。我尝试了各种方法:通过
for(auto:)
,通过
while(file.getline())
等,但我最好的结果是将文件切成字符串行并迭代每一行。它有效,但现在存在所有整数也被切片的问题。
我需要
{20, 0, 1, 17, 0...}

我明白了
{-65, -117, -113, 2, 0, 0, 1, 1, 7...}

{ }
好,但仍然不是正确的结果。
另外,我需要将它们全部放入类构造函数中。

c++ vector ifstream
© www.soinside.com 2019 - 2024. All rights reserved.