问题是将整数从文本文件读取到数组中

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

我正在研究电影数据库,使用户可以输入带有标题,导演和发行年份的电影。然后,数据库将所有3个输入保存为2个字符串(标题和目录)和1个int值(RY)作为发行年份,并将它们全部存储到1个文本文件中。但是,我想对电影从最新的年份到最旧的年份进行排序,但是当我们想将文本文件中的整数读入数组时,sort方法除了按用户输入的顺序打印电影外,不执行任何其他操作他们。有什么方法可以将文本文件中的整数放到数组中吗?下面是排序方法。我们希望数据库中的电影数量为7。

void sort()
{
    string Title;
    string fileName;
    string Director;
    int RY;

    int array [7] = { };
    int temp;
    int p;

    fstream file("directory.txt");

                    for(int i = 0; i < 7; ++i)
                    {
                        file >> array[i];
        }




    for (int i = 1; i < sizeof(array); i++) {
        temp = array[i]; //temp = 3
        p = i -1; // p = 1
        while( p >=0 && array[p] > temp){
            array [p + 1] = array [p];
            p = p-1; //p = 0
        }
        array [p + 1] = temp;
    }


    for (int i = 7 - 1; i >= 0; i--)
        cout << array[i];

    cout << "Entire Movie database" << endl;
    cout << "------------------------" << endl;
    ifstream dir("directory.txt");
    while (dir >> Title >> Director >> RY){
        cout << Title << ' ' << Director << ' ' << RY << endl;
    }

    main();
}
c++ arrays sorting text-files
1个回答
0
投票

您的自定义排序过程(可能)会执行应做的事情:它将对array中的整数进行排序。以下代码仅读取文件的内容并按照读取的顺序输出:

    ifstream dir("directory.txt");
    while (dir >> Title >> Director >> RY){
        cout << Title << ' ' << Director << ' ' << RY << endl;
    }

我想知道您如何期望第一次从文件中读取7个整数,然后第二次读取所有四个字段。也许您认为字符串值会被跳过?他们不会

您的代码中还有其他问题。例如,sizeof(array)不返回元素数,而是返回字节大小。还有一件事:为什么要从main函数调用sort

你为什么要重新发明轮子?将值读入结构,将其存储在向量中,然后使用std::sort过程。

© www.soinside.com 2019 - 2024. All rights reserved.