C++中字符串輸入處理


1、cin

cin是C++中最常用的輸入語句,當遇到空格或者回車鍵即停止.

如:

#include <iostream>

#include <string>

using namespace std;

int main()

{

         char a[50];

         cin>>a;    

         cout<<a<<endl;

         return 0;

}

輸入:abcd遇回車輸出abcd

缺點:只能輸入沒有空格的字符串,當輸入中含有空格,則只能輸出空格之前的字符

輸入:I  love  China輸入空格時輸入並未停止,遇回車輸入停止,輸出I,空格后面的均未輸出。

2. gets()

可以無限讀取,以回車結束讀取,C語言中的函數,在C++中運行會產生bug。

如:

#include <cstdio>

using namespace std;

int main()

{

         char a[50];

         cin>>a;  //輸入空格回車時結束

         gets(a); //將cin輸入的空格前的內容覆蓋了

         cout<<a<<endl;

         return 0;

}

 

輸入:I love China回車結束輸入,輸出結果為love China,I是cin輸入的,空格之后cin輸入結束,后面的是gets函數輸入的內容,因為a為字符串的首地址,因此gets也是重頭輸入的,就覆蓋了cin輸入的內容。

注:把 cin>>a;去掉就回輸出正確的內容,且連空格也會輸出。

3. getline()

若定義變量為string類型,則要考慮getline()函數。用法如下:

#include <iostream>

#include <string>

using namespace std;

int main()

{

         string a;

         getline(cin,a);

         cout<<a<<endl;

         return 0;

}

輸入:I love China回車結束輸入,輸出結果為:I love China.

4.cin.get 

cin.get()函數可以接收空格,遇回車結束輸入。

#include <iostream>

using namespace std;

int main()

{

         char a[50];

         cin.get(a,50);

         cout<<a<<endl;

         return 0;

}

輸入:I love China回車結束輸入,輸出結果為I love China。

5. cin.getline

cin.getline()函數可以同cin.get()函數類似,也可接收空格,遇回車結束輸入。

#include <iostream>

using namespace std;

int main()

{

         chara[50];

         cin.getline(a,50);

         cout<<a<<endl;

         return0;

}

輸入:I love China回車結束輸入,輸出結果為I love China。

 6、cin.getline與cin.get的比較

 

#include <iostream>
int main()
{/******************
 1.cin.getline()與他相比,比較粗一些
 舉例:先定義字符數組 char a[20];
 然后 cin.getline(a,20);即把數組的內容
 讀入進來。它通過換行符來確定行尾,但不保存
 換行符
 2.cin.get()則將換行符留在輸入隊列中
 舉例:假設我們兩次調用cin.get():
 cin.get(a,20);
 cin.get(b,20);
 如果不借助幫助,cin.get(b,20)無法讀入,因為
 換行符留在了輸入隊列,第二次調用時讀的第一個字符便是
 換行符,所以無法讀入新的內容。那么,我們應該如何
 解決這類問題呢?
 同樣的規則,借助不帶參數的cin.get();在上例中的兩句
 之間加入cin.get();用它吃掉換行符。
 **************************/
    using namespace std;
    char name[20];
    char club[20];
    cout << "your name" << endl;
    cin.get(name, 20).get();
    cout << "your favoiate club" << endl;
    cin.get(club, 20).get();
    cout << "hello," << name << endl;
    cout << "This is " << club << " for you!" << endl;
    cin.get();
    return 0;
}

 

輸出為:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM