讀取文本文件 a.txt,按標點(, .)分詞,統計:
set)。map)。封裝單詞字符串,重載 operator<(供 set 排序)與 operator==(供 map 查找)。
內含 set<CWord>,提供 AddString 與 show。
內含 map<CWord, int>,AddString 實現詞頻遞增,Show 輸出「單詞\t次數」。
[cpp]
int main() {
CWordSet wordSet; CWordMap wordMap;
ifstream in("a.txt");
string s, delimset = ",.";
while (getline(in, s)) {
if (s.empty()) continue;
// 替換標點為空格
for (size_t pos = 0; (pos = s.find_first_of(delimset, pos)) != string::npos; )
s.replace(pos, 1, " ");
istringstream iss(s);
while (iss >> s) {
if (!s.empty()) { wordSet.AddString(s); wordMap.AddString(s); }
}
}
wordSet.show(cout); cout << endl;
wordMap.Show(cout);
}
set 自動去重且有序;map 鍵值對統計頻次。istringstream 配合 operator>> 自動按空白分詞。CWord 的比較運算符確保容器正常工作。unordered_map + 自定義哈希提升性能。