用c++中set来得到字符串中共有多少单词
时间: 2024-03-18 14:40:40 浏览: 90
可以使用 C++ STL 中的 set 容器来实现统计字符串中共有多少个单词的功能。具体步骤如下:
1. 将字符串中的所有非字母字符替换成空格,只保留字母和单词之间的空格。
2. 将处理后的字符串按照空格分割成单词,并将其存储到 set 容器中。
3. 统计 set 容器中元素的个数,即为字符串中共有多少个单词。
下面是一个示例代码:
```c++
#include <iostream>
#include <set>
#include <string>
using namespace std;
int countWords(string s) {
// 将字符串中的非字母字符替换成空格
for (int i = 0; i < s.size(); i++) {
if (!isalpha(s[i])) {
s[i] = ' ';
}
}
// 将处理后的字符串按空格分割成单词
set<string> words;
int start = 0, end = 0;
while (end < s.size()) {
if (s[start] == ' ') {
start++;
end++;
continue;
}
end = s.find(' ', start);
if (end == string::npos) {
end = s.size();
}
words.insert(s.substr(start, end - start));
start = end + 1;
}
// 返回单词数量
return words.size();
}
int main() {
string s = "Hi, how are you? I'm fine, thank you!";
cout << countWords(s) << endl; // 输出 9
return 0;
}
```
在上述代码中,我们首先使用 `isalpha()` 函数将字符串中的非字母字符替换成空格,然后使用 `set` 容器将处理后的字符串按照空格分割成单词存储起来。最后,统计 `set` 容器中元素的个数,即为字符串中共有多少个单词。
阅读全文