對c++中string的認識

將跳轉至一大牛的博客,對我啓發很大#鏈接#
其中關於getline()敘述不是很詳細,另作補充:
要在前面加上頭文件 #include < string>

string類常用的構造函數:

string();//默認構造函數,建立一個長度爲0的字符串

例子:string s1;

string (const char *s);//用指針s所指向的字符串常量初始化string對象

例:

string s2 = “abc” ;

string(const string & rhs); //複製構造函數

例:

string s3= s2;

string類常用操作:

s +t 將串s和t連接成一個新串

s = t 用t更新s

s == t 判斷s與t是否相等

s != t 判斷s和t是否不等

s < t 判斷s是否小於t(字典順序)

s >= t

s[i] 訪問串中下標爲i的字符

s.length 得到字符串的長度

getline 輸入整行字符串

例子:

getline(cin, s2);

輸入字符串的時候,可以使用其他分隔符作爲字符串結束的標誌(例如逗號,分號),將分隔符作爲getline的第三個參數即可:

例子:

getline(cin,s2,’,’);
此寫法將讀到‘,’處停止讀入。
用了string 來操作可以使很多看似很難的問題簡單化
比如來個實戰:


統計單詞數
題目描述
一般的文本編輯器都有查找單詞的功能,該功能可以快速定位特定單詞在文章中的位置,有的還能統計出特定單詞在文章中出現的次數。

現在,請你編程實現這一功能,具體要求是:給定一個單詞,請你輸出它在給定的文章中出現的次數和第一次出現的位置。注意:匹配單詞時,不區分大小寫,但要求完全匹配,即給定單詞必須與文章

中的某一獨立單詞在不區分大小寫的情況下完全相同(參見樣例1 ),如果給定單詞僅是文章中某一單詞的一部分則不算匹配(參見樣例2 )。

輸入輸出格式
輸入格式:
共2行。

第1行爲一個字符串,其中只含字母,表示給定單詞;

第2行爲一個字符串,其中只可能包含字母和空格,表示給定的文章。

輸出格式:
一行,如果在文章中找到給定單詞則輸出兩個整數,兩個整數之間用一個空格隔開,分別是單詞在文章中出現的次數和第一次出現的位置(即在文章中第一次出現時,單詞首字母在文章中的位置,位置從0 開始);如果單詞在文章中沒有出現,則直接輸出一個整數-1。
input example
To
to be or not to be is a question
to
Did the Ottoman Empire lose its power at that time
output example
2 0
-1
c++代碼

#include <bits/stdc++.h>//萬能頭文件
using namespace std;
int main()
{
   string a,b;
   int i,j,a1,b1,n=0;
   string::size_type s,h;//string中find()的使用具體看上面鏈接
   getline(cin,a);
   getline(cin,b);
   a1=a.size(),b1=b.size();
   for(i=0;i<a1;i++)
    a[i]=tolower(a[i]);
   for(j=0;j<b1;j++)
   b[j]=tolower(b[j]);

    a=' '+a+' ';
    b=' '+b+' ';//可以說是點睛之筆了
    s=b.find(a);
   if(s==string::npos)
    cout<<"-1";
   else
   {

       h=b.find(a);
       while(h!=string::npos)
       {
           n++;
           h=b.find(a,a1+h);
       }
        cout<<n<<" "<<s;
   }

}

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