簡體   English   中英

C ++字計數器

[英]C++ Word counter

很難開始使用C ++類的項目。 我將讀取一個文本文件並計算每行中每個單詞的出現次數。 輸出將報告找到的每個單詞,然后列出其找到的行以及該行上出現的次數(如下所示)。

所以對於一個單詞,“open”,如果它只在第三行發生兩次,它將打印出來:

open : 3:2

總體輸出如下所示:

A : 48:1
a : 9:1, 10:1, 12:2, 14:1, 17:2, 19:1, 26:1, 27:1, 28:2,
: 39:1, 41:1, 43:1, 45:2, 46:2, 49:1, 50:2, 51:1, 56:3,
: 81:1, 82:1, 94:1, 111:1, 112:1, 114:1, 117:1, 132:1, 135:1,
: 138:1, 142:2, 143:1, 144:1, 152:1, 156:1, 161:2, 163:1, 164:1,
: 167:1, 169:1, 175:1, 182:2, 190:1, 192:1
about : 16:1, 29:1, 166:1, 190:1, 191:1
above : 137:1
accompanied : 6:1
across : 26:1
.
.
.

我正在考慮使用地圖作為數據結構。 然后,在讀取/解析每一行完成之后,我會將這些值移動到一個更大的多圖表中,該圖表跟蹤整個文本文件,其中鍵是單詞,值是字符串,格式為#:#。

在我開始思考這條思路之前,這樣做是否有意義,或者你能推薦一種我錯過的更好的方法嗎?

你似乎在地圖上不清楚。 地圖存儲數據。 它不解析數據。 你需要:

  1. 閱讀文件中的文字。 這可以逐個完成,也可以一次讀取一行文件並標記該行。 我的建議是一次讀一個字。

  2. 想出數據結構來存儲數據。 我的建議:

    std::map<std::string, std::vector<std::pair<int, int>>>

    顯然,地圖中的關鍵是這個詞。 std::pair<int, int>包含一個行號以及該行中該單詞的出現次數。 std::vector<std::pair<int, int>>允許您捕獲那些std::pair的列表。

希望這有助於您前進。

暫無
暫無

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

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