21xrx.com
2025-04-10 15:33:14 Thursday
文章检索 我的文章 写文章
C++程序:统计字符串中单词个数
2023-06-28 09:17:28 深夜i     16     0
C++ 程序 统计 字符串 单词个数

本文将介绍如何使用C++编写统计字符串中单词个数的程序。

首先,需要了解什么是单词。在英语中,单词是由字母构成的词汇单位。以空格、标点符号等分隔符区分单词。因此,在代码实现中需要考虑到这些分隔符的影响。

对于本问题,可以使用一个变量wordCount来记录单词数量。接下来需要遍历字符串的每一个字符,当某个字符不是分隔符时,即代表形成了一个新的单词,此时就需要将wordCount自增。在实现上可以使用一个布尔变量inWord来记录当前字符是否在单词中。

下面是统计字符串中单词个数的完整代码:

#include <iostream>
#include <string>
using namespace std;
int main() {
  string s = "This is a sentence.";
  int wordCount = 0;
  bool inWord = false;
  for (int i = 0; i < s.length(); i++) {
    if (s[i] == ' ' || s[i] == ',' || s[i] == ';' || s[i] == '.') {
      if (inWord) {
        wordCount++;
      }
      inWord = false;
    } else
      inWord = true;
    
  }
  // 特别处理字符串结尾处的单词
  if (inWord) {
    wordCount++;
  }
  cout << "Word count: " << wordCount << endl;
  return 0;
}

在上面的代码中,字符串s可以通过用户输入或从文件读取等方式获取,这里为了方便直接将字符串赋值给变量s。变量wordCount初始值为0,表示还没有找到任何单词。变量inWord初始值为false,表示当前不在单词中。

代码中使用了一个for循环遍历字符串中的每一个字符。在for循环内部,会依次检查每个字符。如果该字符是空格、逗号、分号或句号中的任意一个,则代表一个单词的结束,需要将wordCount自增,并将inWord置为false。如果该字符不是以上的任何一个符号,则代表该字符属于一个单词,inWord需要置为true。

需要注意的是,由于循环结束后可能还存在一个单词没有记录到,因此需要在循环外面特别处理字符串结尾处的单词。

最后,输出统计结果即可。

在实际应用中,可以对上述代码进行优化,例如使用isspace函数代替单独判断空格等符号。此外,一些特殊情况也需要考虑到,比如字符串中可能存在连续的多个空格等情况。同学们可以在这个基础上进一步拓展和完善代码。

  
  

评论区

请求出错了