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

2.c++代码实现:

#include<iostream>
#include<string>
using namespace std;
unsigned last_word_length( const string &line);

//主程序:用来从标准输入端获取字符串line ,显示结果
unsigned main(int argc, char **argv)
{
   string line;
   getline(cin,line);
   cout<<"字符串最后一个单词的长度为:"<< last_word_length(line) <<endl;
   
  return 0;
}

//函数 int last_word_length( const string &line)
//函数说明:获取字符串line中最后一个单词的长度,单词是以空格进行分割
//参数说明:因为只是对字符串line进行检索,没有对字符串line进行改变,为了提高运行效率 所以用传 常引用的方式
//进行参数传递
//返回值:最后一个单词的长度,当字符串为空串,或者为空格串返回值为 0,当字符串长度大于等于128返回-1,其余
//情况返回最后一个单词的长度。
//测试用例:1.line 为空串 (串中什么都没有)2.空格串 (字符串不为空,但是串中的字符全为 空格)
//3.line只有一个单词(1)单词的长度大于等于128 (2)单词的长度小于128 
//4.line中有多个单词 (1)字符串line长度大于等于128 (2)字符串line长度小于128

unsigned last_word_length( const string &line)
{ 
//1.判参 2.循环找单词 3.返回长度
   if( line.length() >= 128 )
       return (0);
       
 //循环找单词
    const string delims(" ");//单词分隔符,这里是用 空格进行分割
    string::size_type begIdx, endIdx;//begIdx代表单词的起始位置,endIdx代表单词的结束位置
                                     //在c++标准库中的string 对字符串的索引只能用 std::string::size_type
                                     
    begIdx = line.find_first_not_of(delims);//找到单词的起始位置
    string::size_type length = 0;//记录单词的长度,初始化为0
    
    while(begIdx != string::npos) 
     {
       endIdx = line.find_first_of(delims,begIdx);//单词的最后一个字符
	   if( endIdx == string::npos)//字符串line中的最后一个单词
	   {
		   endIdx = line.length();
	   }
       length = endIdx - begIdx;//单词的长度
       begIdx = line.find_first_not_of ( delims,endIdx);//下一单词的起始位置
       
     }                               
    
    return (static_cast<int>(length));//提高程序的可移植性,将 string::size_type转换为int
}

3.测试结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值