我正在編寫一個C++程序來計算文本文件中出現的單詞的頻率。我使用isalpha
函數分隔單詞,但isalpha
不區分具有不同標點符號的相同字符串。在C++中區分具有不同標點符號的相同字符串
例如:「我擁有一家公司,在我的公司裏有200名員工,我愛我的公司。」 在上面的句子裏它給公司的數量爲3 如何使它分化像計數:
company 1
company, 1
company. 1
這不計數的循環:
while(!isalpha(c) && !in.eof())
{
c = in.get();
}
while(isalpha(c))
{
out.push_back(tolower(c));
c = in.get();
}
哪裏「出」是一個字符串,'in'是一個istream值,c是一個char。
[編輯]得到了解決
while(!isalpha(c) && !ispunct(c) !in.eof())
{
c = in.get();
}
while(isalpha(c) || ispunct(c))
{
out.push_back(tolower(c));
c = in.get();
}
重新檢查並重新考慮'while'條件的邏輯。 –
你好,@user - 這是一個家庭作業問題嗎?我們有時候會幫助做作業,但是我們知道這是否有益。 –
沒有Rob,這只是我在探索C++,我想有人頭腦風暴。無論如何,感謝解決方案,併爲其他人發佈。 – user1035927