具有可变大小列的动态数组

时间:2013-06-07 13:46:03

标签: visual-c++ dynamic ifstream

我正在阅读一个具有可变大小列的文件:

0 1 3 0

0 2 0

0 4 0

我的代码读取文件,但在最后一个“0”之后,它输出两个垃圾数字。输出为:0130020040-8457888-85648454(类似的东西):请帮助我谢谢

int **routes  = new int *[3]; //create route matrix

for(int i=0;i<3;i++)
{   
    routes[i] = new int[sizeof(routes)];
}


    ifstream routefile;
    routefile.open("Sweep_routes.txt");

    if(routefile.fail()){
        cout << "ERROR";
        exit(1);}
    for (int i=0;i<3;i++){
        for (int j=0;j<sizeof(routes);j++){
            routefile>>routes[i][j]; //read
        }
    }

    for (int i=0;i<3;i++){
        for (int j=0;j<sizeof(routes);j++){
            cout << routes[i][j]; //display
        }
    }


    system("PAUSE");
    return 0;
}

1 个答案:

答案 0 :(得分:0)

您可以使用此替代代码:

#include <iostream>
#include <string>
#include <array>
#include <fstream>

int main()
{
    std::array<std::array<std::string, 3>, 3> routes;
    std::ifstream routefile("Sweep_routes.txt");

    if (routefile)
    {
        for (auto x : routes)
        {
            for (auto y : x)
            {
                if (routefile >> y)
                    std::cout << y;
            }
        }
    }

    std::cin.get();
}