#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(因为要排除空格本身)