簡體   English   中英

在 C++ 中從文件中讀取數據有困難

[英]Having Difficulty Reading Data From a File in C++

我在這個學校項目上遇到了一些問題,可以在開始時使用一些幫助。 我得到一個文件,其中包含電影名稱、制作年份和類型,然后我應該創建一個包含信息的鏈接列表。 文件中的每一行看起來像這樣:

1::Toy Story (1995)::Animation|Children's|Comedy

如果用戶決定按電影名稱搜索並輸入Toy Story ,它應該顯示電影的名稱和年份: Toy Story (1995)如果用戶決定按流派搜索,它應該顯示包含該流派的每部電影。 最后,如果用戶想刪除一部電影,他們輸入電影標題,它應該與其他信息一起從鏈接列表中刪除。

所以到目前為止我遇到的問題是讀取數據。 當我讀入數據時,我可以刪除::| 並將所有內容存儲在一個向量中,但現在向量的每個元素都是一個詞,這意味着如果我要打印出vect[1]例如,它將是Toy (因為vect[0]將是1因為我不知道如何刪除前導數字,這是另一個問題)。

那么我將如何將電影的標題保留在一起,以便我可以將其添加到鏈接列表中,反之亦然? 另外,我是否需要創建三個鏈接列表,一個是電影名稱,一個是年份,另一個是類型?

我沒有太多代碼,因為我的問題剛開始是對的,但這是我到目前為止所擁有的。 它遍歷文件並刪除::| 並將其存儲到一個向量中。 我不知道我應該如何從這里開始,或者即使這是解決此類問題的正確方法。

   while(inFile >> value)
   {
       istringstream iss(value);
       string line;

       while(getline(iss, line))
       {
           size_t prev = 0, pos;
           while ((pos = line.find_first_of("|:", prev)) != string::npos)
           {
               if (pos > prev)
               {
                   vect.push_back(line.substr(prev, pos-prev));
               }
               prev = pos + 1;
           }
           if (prev < line.length())
           {
                vect.push_back(line.substr(prev, string::npos));
           }
       }
    }

我不是通常尋求幫助的人,但我完全陷入困境,不知道如何繼續。 任何幫助,將不勝感激! 如果我需要澄清任何事情,請告訴我。

不要把它當作一個字符串。 編寫一個數據結構來包含信息。

struct movie {
   std::string title;
   std::string year;
   std::vector<std::string> genres;
};

然后,在解析每一行時,填充此結構的一個實例。 解析完該行后,將結構推送到您的列表中。 這將使您能夠在以后進行搜索。 您還可以將流運算符添加到結構中,以便以干凈的格式將其打印到屏幕上。

暫無
暫無

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

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