C++实现:如何计算字符串最后一个单词的长度

许南星
许南星
发布时间:2026-10-13| 3人浏览过
原创

在处理文本数据时,准确提取和计算字符串末尾的单词长度是一个常见的基础需求。本文将详细讲解如何利用C/C++标准库中的字符串处理方法,通过逻辑判断与简单的索引运算,实现这一功能,并提供可直接运行的代码示例。

问题分析与核心思路

目标是对输入的字符串进行处理,忽略末尾可能存在的非单词字符(假设输入规范),提取最后一个由空格隔开的“单词”,并计算其字符数。这里的“单词”指非空格的连续字符序列。

解决这个问题的关键在于定位最后一个单词的起始位置。如果字符串中没有空格,说明整串就是一个单词;如果有空格,最后一个单词的起始位置就在最后一个空格之后的第一个字符处。

第1步:识别单个单词与多个单词的情况

首先需要排除只有一个单词的特例。当输入字符串不包含任何空格字符时,整个字符串即为所求,直接返回其长度即可。


在此场景下,无需进行复杂的减法操作,直接使用 s.size() 获取的结果即为答案。

第2步:利用反向查找定位单词边界

对于包含多个单词的字符串,我们需要找到最后一个单词开始的地方。在C++ std::string 类中,可以使用成员函数 rfind(char_type, pos) 来执行从末尾向前的查找。

具体参数设置:

  • 目标字符:' ' (空格)
  • 查找范围:默认从字符串末尾开始倒序搜索

执行 s.rfind(' ') 后,如果能找到空格,将返回该空格在字符串中的索引值 pos。因为数组索引是从0开始的,所以最后一个单词的第一个字母的索引应该是 pos + 1。

此时,最后一个单词的长度可以通过总长度减去起始索引来计算:即 s.size() - (pos + 1)。

C/C++ 完整代码实现

结合上述逻辑,以下是使用 C++ 编写的完整实现方案。注意输入部分建议使用能读取空行的读取方式。

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s;
    // getline 可以完整读取包含空格的一行输入
    getline(cin, s);

    // 从后往前查找最后一个空格的位置
    size_t pos = s.rfind(' ');

    if (pos != string::npos)
    {
        // 找到了空格:最后一个单词长度为总长减去(空格位置+1)
        cout << s.size() - (pos + 1) << endl;
    }
    else
    {
        // 没找到空格:整串仅一个单词,直接输出总长度
        cout << s.size() << endl;
    }

    return 0;
}

关键点总结

  • 输入处理:务必使用 getline 而不是 cin >> s,否则遇到空格就会截断输入,导致无法正确统计后续内容。
  • 常量判断:string::npos 表示查找失败(即未找到指定字符),这是判定单/多单词分支的关键依据。
  • 索引计算:记住长度等于“结束位置”减“起始位置”。在基于0的索引体系中,最后一个单词的起始点是空格位置加一。

以上就是C/C++计算字符串最后一个单词的长度的详细内容,更多关于C语言字符串处理的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。