题目描述
编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。 (凡是以一个或多个空格隔开的部分就为一个单词)
输入描述:
输入包括1行字符串,以“.”结束,字符串中包含多个单词,单词之间以一个或多个空格隔开。
输出描述:
可能有多组测试数据,对于每组数据,输出字符串中每个单词包含的字母的个数。
示例
输入:hello how are you.
输出:5 3 3 3
思路
-
将一句话中的多个单词,看做一个一个单词输入。
-
每输入一次,就判断单词的长度,并输出。
-
若单词的最后一个字符是'.',则输出单词长度-1;否则直接输出单词长度。
具体实现
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
while(cin>>s){
if(s[s.size()-1] == '.'){
cout<<s.size()-1;
//break;
}
else cout<<s.size()<<" ";
}
return 0;
}
小结
-
本来想着用getline实现获取一行,正好还能以.结束,getline(cin,s,'.'),但是发现虽然输入好写,但是以后的单词分隔很麻烦,所以放弃这种想法。
-
直接把一行单词想成一个一个单词,用cin输入一个单词,直接判断它的长度并输出。若单词结尾是'.',则输出数组长度减1。单词的最后一个字符即下标为字母长度-1。