【问题标题】:C++ trying to read data from file into vectorC ++试图将文件中的数据读入向量
【发布时间】:2015-05-06 21:18:31
【问题描述】:

我只是想将文件中的数据读入向量。如图所示,我试图从中读取的文件包含第一个数字 (n),它是节点数。在那之后,我读了n个重量。最后,我从邻接矩阵中得到了连接。当我编译我的代码时它停止工作。

int main()
{
    ifstream inFile;
    string tline;

    inFile.open("Problem.dat_50_50_0");

    if(!inFile)
        cout << "OPSS" << endl;

    inFile >> tline;
    inFile >> n;

    for(int i = 0; i < 2 * (n + 1); i++)
        inFile >> tline;

    vector<vector<int> > matrix(n, vector<int>(n));
    vector<list<int> > adj(n);
    vector<int> weight(n);
    vector<int> degree(n);
    vector<string> color(n, white);

    for(int i = 0; i < n; i++)
    {
        inFile >> weight[i];
        weight.push_back(weight[i]);
    }

    inFile >> tline;

    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
        {
            inFile >> matrix[i][j];

            if(i == j)
                matrix[i][j] = 0;
            if(matrix[i][j] == 1)
                adj[i].push_back(j);
        }
}

我正在尝试打开文件读取第一行,将此数字放入n,然后将push_back 放入一个向量中,第一行之后的nth 数字(表示重量如图所示在图片里)。读取权重后,我们去矩阵获取邻居。如果matrix[i][j] == 1,我们将j的值放入邻接向量中。

比如根据图片,adj向量会是这样的:

0 -> 1, 2
1 -> 0, 2, 3
2 -> 0, 1
3 -> 1

【问题讨论】:

  • 请阅读大量示例:StackOverflow C++ read file vector
  • 图片不可见(我认为您需要更多的声誉才能在此处附加它),并且您得到的错误不清楚:它至少可以编译吗?然后你有一个运行时错误?您是否尝试过一些基本的调试来了解它在哪里崩溃?

标签: c++ vector


【解决方案1】:

你为什么不这样写数据?:4;12,2365,85;6,11,12,8; 更容易拆分和解析..

或者使用name=value列表..

希望这会有所帮助.. 正是我最了解它的方式。

【讨论】:

    【解决方案2】:

    这个块看起来不对:

    for(int i =0; i < n ; i++){
        inFile>> weight[i];
        weight.push_back(weight[i]);
    }
    

    您从inFile 中获取数字并将其放入weight[i],然后在下一行中,您再次push_back 相同的值,但随后您将在下一次迭代中覆盖它(因为@987654325 @ 同时增加了)。这意味着,如果来自文件的数字是 1 2 3 4,您将在每次迭代结束时得到以下结果:1 11 2 21 2 3 31 2 3 4 4inFile&gt;&gt; weight[i]; 一个人就够了。

    那么,我不认为这是阻碍你的问题,但是......

    if(! inFile){
        cout << "OPSS" << endl;
    }
    

    如果您无法读取该文件,您不仅应该打印“OPSS”,还应该退出,或者抛出异常。无论如何,你不能只是继续,因为其余的代码希望文件在那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 2013-11-05
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多