C++ string 类刷题实战:常用字符串处理技巧
在 C++ 刷题过程中,string 类的灵活运用往往是解题的关键。今天整理了四道经典题目,涵盖输入处理、回文判断、字符统计及字符串反转,希望能帮大家理清思路。
一、字符串最后一个单词的长度
做题时需要注意,使用 cin 输入遇到空格会停止,而题目中可能包含多个单词。此时应改用 getline 函数读取整行。
getline 并非成员函数,而是 <string> 头文件中的全局函数,用于从输入流读取一整行内容存入 string 对象。
// 基础用法(读整行)
getline(输入流对象,string 对象);
// 扩展用法(读至指定终止符)
getline(输入流对象,string 对象,终止字符);
求最后一个单词长度,常规做法是遍历记录空格位置,但利用 rfind 会更高效。rfind 从末尾向前查找,返回匹配内容的起始下标,未找到则返回 string::npos。
逻辑很简单:用 rfind(' ') 找最后一个空格。若找到,长度 = 总长 - (空格位置 + 1);若没找到,说明整个串就是一个单词,直接返回总长。
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
getline(cin, str);
size_t pos = str.rfind(' ');
if (pos != string::npos) {
cout << str.size() - (pos + 1) << endl;
} else {
cout << str.size() << endl;
}
return 0;
}
注意 string::npos 是静态常量,代表无效位置。判断时务必使用 != string::npos,不要用 -1,因为 size_t 是无符号类型。


