字符串最後一個單詞的長度

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.測試結果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章