21xrx.com
2024-12-23 01:25:37 Monday
登录
文章检索 我的文章 写文章
C++程序:统计字符串中单词个数
2023-06-28 09:17:28 深夜i     --     --
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函数代替单独判断空格等符号。此外,一些特殊情况也需要考虑到,比如字符串中可能存在连续的多个空格等情况。同学们可以在这个基础上进一步拓展和完善代码。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复