โจทย์
ตัวอย่างร่างนี้คำนวณจำนวนคำทั้งหมดในสตริงที่กำหนด וכן นับจำนวนครั้งที่คำเฉพาะเจาะจงเกิดขึ้น โดยใช้ stringstream ในโค้ด C++ คลาส stringstream ผูกออบเจกต์สตริงกับสตรีม ทำให้คุณอ่านจากสตริงได้เหมือนเป็นสตรีม โค้ดนี้จะทำสองอย่าง แรก นับจำนวนคำทั้งหมด แล้วคำนวณความถี่ของคำแต่ละคำในสตริงโดยใช้เมธอดสำคัญของ map iterator ดังนี้
ตัวอย่างโค้ด C++
#include <bits/stdc++.h>
using namespace std;
int totalWords(string str){
stringstream s(str);
string word;
int count = 0;
while (s >> word)
count++;
return count;
}
void countFrequency(string st){
map<string, int> FW;
stringstream ss(st);
string Word;
while (ss >> Word)
FW[Word]++;
map<string, int>::iterator m;
for (m = FW.begin(); m != FW.end(); m++)
cout << m->first << " = " << m->second << "\n";
}
int main(){
string s = "Ajay Tutorial Plus, Ajay author";
cout << "Total Number of Words=" << totalWords(s)<<endl;
countFrequency(s);
return 0;
}
ผลลัพธ์
เมื่อสตริง "Ajay Tutorial Plus, Ajay author" ถูกส่งให้โปรแกรมนี้ จำนวนรวมและความถี่ของคำในเอาต์พุตจะเป็นดังนี้
Enter a Total Number of Words=5 Ajay=2 Tutorial=1 Plus,=1 Author=1