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; }
輸出為: