21xrx.com
2025-03-31 04:19:31 Monday
文章检索 我的文章 写文章
C++中不同单词个数的统计
2023-06-23 06:13:52 深夜i     18     0
C++ 单词个数 统计 不同 编程

C++是一种高级编程语言,可以用于开发各种类型的程序。在编写一个程序时,常常需要对输入的文本进行处理。其中一个常见的需求是计算文本中不同单词的个数。

在C++中,可以使用字符串(string)和vector等数据结构进行单词个数的统计。下面介绍两种不同的方法。

方法一:使用字符串和哈希表

使用字符串存储输入的文本,然后使用哈希表统计不同单词的个数。哈希表可以用C++标准库中的unordered_map实现。具体实现过程如下:

1.定义一个unordered_map 类型的变量,用于存储不同单词和它们出现的次数。

2.使用std::getline()从标准输入流中读取一行文本。

3.使用std::istringstream将这行文本转换成一个字符串流。

4.使用while循环从字符串流中读取一个单词,然后将它加入到哈希表中。

5.输出哈希表中不同单词的个数。

下面是示例代码:

#include <iostream>
#include <unordered_map>
#include <sstream>
using namespace std;
int main() {
  unordered_map<string, int> m; // 定义哈希表
  string line;
  getline(cin, line); // 从标准输入流中读取一行
  istringstream iss(line); // 将这行文本转换成字符串流
  string word;
  while (iss >> word) { // 循环读取单词
    m[word]++;
  }
  cout << m.size() << endl; // 输出不同单词的个数
  return 0;
}

方法二:使用vector和排序算法

使用vector存储输入的文本,然后使用排序算法(如std::sort)和unique函数统计不同单词的个数。具体实现过程如下:

1.定义一个vector 类型的变量,用于存储输入的文本。

2.使用std::getline()从标准输入流中读取一行文本。

3.使用std::istringstream将这行文本转换成一个字符串流。

4.使用while循环从字符串流中读取一个单词,然后将它加入到vector中。

5.使用std::sort对vector进行排序。

6.使用std::unique去除vector中的重复元素,并输出不同单词的个数。

下面是示例代码:

#include <iostream>
#include <vector>
#include <algorithm>
#include <sstream>
using namespace std;
int main() {
  vector<string> vec;
  string line;
  getline(cin, line);
  istringstream iss(line);
  string word;
  while (iss >> word) {
    vec.push_back(word);
  }
  sort(vec.begin(), vec.end());
  auto it = unique(vec.begin(), vec.end());
  cout << distance(vec.begin(), it) << endl;
  return 0;
}

综上所述,C++中可以使用不同的数据结构和算法实现单词个数的统计。具体选择哪种方法取决于程序的需求以及输入文本的大小。

  
  

评论区