题解 | 字符串最后一个单词的长度

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

int main()
{
string line;
// 不要使用cin>>line,因为会它遇到空格就结束了
// while(cin>>line)
while(getline(cin, line))
{
size_t pos = line.rfind(' ');
if(pos==string::npos)
{
    cout<<line.size()<<endl;
}
else
{
cout<<line.size()-pos-1<<endl;
}
}
return 0;
}
  • string line;:声明一个 string 类型的变量 line,用于存储输入的字符串。
  • while(getline(cin, line)):使用 getline 函数从标准输入 cin 读取一行字符串存储到 line 中。getline 函数会读取一整行内容,直到遇到换行符 '\n' 为止,与 cin >> line 不同,getline 不会因为遇到空格而结束读取。只要 getline 成功读取一行,while 循环就会继续执行。
  • size_t pos = line.rfind(' ');:使用 rfind 函数从字符串 line 的末尾开始查找最后一个空格的位置,并将其存储在 pos 变量中。rfind 函数返回最后一个匹配字符的位置,如果未找到匹配,则返回 string::npos
  • 在输出结果之前检查 pos 是否等于 string::npos。如果 pos 等于 string::npos,意味着没有找到空格,此时可以直接输出字符串的长度,因为整个字符串都可以被视为在最后一个空格之后(实际上没有空格)
  • cout << line.size() - pos - 1 << endl;:计算并输出最后一个空格之后的字符数量。计算方法是用字符串的总长度 line.size() 减去最后一个空格的位置 pos 再减去 1(因为要排除空格本身)
全部评论

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务