C ++中的唯一字数帮助?

时间:2010-11-21 14:39:12

标签: c++ function word-count

我想做一个可以统计独特单词的函数。例如:

“我喜欢编写一些有用的东西。我喜欢吃。现在吃冰淇淋。”

在这种情况下,每个独特的单词:

I occurs 2
like occurs 2
...

我稍后会忽略这个案子。请帮忙

编辑:

我已经写完了这些功能。它完美地运作。谢谢你的帮助。非常感谢。

3 个答案:

答案 0 :(得分:2)

听起来你想要使用带有键字符串和int数据的std::map

如果地图中不存在某个项目,则添加int值为1.如果该项目确实存在于地图中,则只需将1添加到其关联值。

答案 1 :(得分:1)

我会将此视为一个家庭作业问题(希望没有人会如此轻率地提出完整的代码)。

如果您对“单词”的定义非常宽松,那么iostream输入已经将输入拆分为单词。

然后使用例如std::map计算不同的单词。

干杯&第h。,

答案 2 :(得分:1)

这是熟悉迭代器和标准算法的绝佳机会。

std::istream_iterator迭代从给定流中提取的单词列表,std::cin或文件或字符串。

std::unique可以帮助您实现目标。

示例程序:

#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;


int main()
{
    istream_iterator<string> begin(cin), end;
    vector<string> tmp;

    copy(begin, end, back_inserter(tmp));
    sort(tmp.begin(), tmp.end());
    vector<string>::iterator it = unique(tmp.begin(), tmp.end());

    cout << "Words:\n";
    copy(tmp.begin(), it, ostream_iterator<string>(cout));
}

有关标准库的更多参考,请参阅http://www.cplusplus.com