2017-07-30 35 views
-2

我想創建一個免費的庫存系統,我似乎無法完成如何讀取文件內容。接下來的話,如果有匹配的話,給他們添加一個數字。所以如果說「棒子」在文件中出現3次,它就會打印到控制檯。 「棒:3」如何讀取文件的內容,如果文件中的單詞重複將它們添加到列表中?

void ViewFiles() { 
    string line; 
    ifstream a_file("Candles"); 
    if (a_file.is_open()) 
    { 
    while (getline(a_file, line)) 
    { 
     cout << line << '\n'; 
     if (line == line) { 
     line = line + "1"; 
     } 
    } 
    a_file.close(); 
    } 
    else cout << "Unable to open file"; 
} 

如果代碼不好,我很抱歉,這是我自己的第一個真正的項目。

+0

如此短的代碼片段可以更好地直接複製到這個問題。輸入表單有一個用於輸入代碼的單獨按鈕。 – Stephan

+0

考慮'if(line == line)'*意味着什麼*(即有* *有*時間*不*真*)。 – WhozCraig

+0

1)製作一個文件的fstream來讀取它的內容。 2)使用-map 散列創建哈希映射; 3)從ypur fstream獲取單詞並做hash [word] ++; 4)現在,您只需在最後遍歷一次地圖並輸出具有所需格式數據的密鑰 – monster

回答

0

您需要2個循環。在這段時間內添加另一個比較第一個單詞與列表的其餘部分。如果你找到相同的單詞,你可以給計數器加1。當你完成你打印該字和計數器,並尋找第二個字...

1

只需使用地圖。 你可以這樣做:

map<string, int> someName; 

無論何時你發現了一個新詞,把它作爲一個重點:

someName[word]++; //you found it so increment the occurrence; 
相關問題