在做在線編程的時候,好多人都是用到 getline()函數,而不是用的cin。剛開始還覺得都可以吧。直到遇到了輸入有空格的情況。
那么我們這里就來說說 cin和getline() 的區別。
1、cin>>
用法1:最基本,也是最常用的用法,輸入一個數字:
#include <iostream>
using namespace std;
main ()
{
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
}
輸入:2[回車]3[回車]
輸出:5
用法2:接受一個字符串,遇“空格”、“TAB”、“回車”都結束
#include <iostream>
using namespace std;
main ()
{
char a[20];
cin>>a;
cout<<a<<endl;
}
輸入:jkljkljkl
輸出:jkljkljkl
輸入:jkljkl jkljkl //遇空格結束
輸出:jkljkl
注意到 高亮部分。cin遇“空格”、“TAB”、“回車”都結束。這就有很大局限性了。
2、getline() // 接受一個字符串,可以接收空格並輸出,需包含“#include<string>”
#include<iostream>
#include<string>
using namespace std;
main ()
{
string str;
getline(cin,str);
cout<<str<<endl;
}
輸入:jkljkljkl
輸出:jkljkljkl
輸入:jkl jfksldfj jklsjfl
輸出:jkl jfksldfj jklsjfl
注意:getline()函數不是基於istream流,它是屬於string流。
當然還有其他的如:cin、cin.get()、cin.getline()、getline()、gets()。這里不做介紹。
參考:http://blog.csdn.net/caojunling/article/details/1890519
