簡體   English   中英

將文本文件中的整數讀入數組的問題

[英]Issue with reading in integers from a text file into an array

我正在開發一個電影數據庫,該數據庫允許用戶輸入帶有標題、導演和發行年份的電影。 然后,數據庫將所有 3 個輸入保存為 2 個字符串(標題和導演)和 1 個 int 值(RY)用於發布年份,並將所有這些輸入一起存儲到 1 個文本文件中。 但是,我想從最新年份到最舊年份對電影進行排序,但是當我們想從文本文件中讀取 integer 到數組中時,排序方法除了按照用戶輸入的相同順序打印出電影之外什么也不做他們。 有沒有辦法將文本文件中的整數放入數組中? 下面是排序方法。 我們想要在數據庫中的電影數量是 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();
    }

您的自定義排序過程(可能)會做它應該做的任何事情:它對array中的整數進行排序。 以下代碼只是讀取文件的內容並按照讀取的順序輸出:

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

我想知道您如何期望第一次從文件中讀取 7 個整數,然后第二次讀取所有四個字段。 也許您認為字符串值會被跳過? 他們不會

您的代碼中還有其他問題。 例如, sizeof(array)不返回元素的數量,而是以字節為單位的大小。 還有一件事:你為什么要從你的sort function 中調用main

你為什么要重新發明輪子? 將值讀入結構,將它們存儲在向量中,然后使用std::sort過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM