cin.get(),cin.getline() 是C++的
cin.get()獲取一個字符
cin.getline() 獲取一行字符串
getline(cin,s)是C的,獲取一行字符串
cin.getline()
用法:接收一行字符串,可以接收空格並輸出,可以控制接受的字符范圍
#include <iostream>
using namespace std;
main ()
{
char m[20];
cin.getline(m,5);
cout<<m<<endl;
}
輸入:jkljkljkl
輸出:jklj
接收5個字符到m中,其中最后一個為'\0',所以只看到4個字符輸出;
如果把5改成20:
輸入:jkljkljkl
輸出:jkljkljkl
輸入:jklf fjlsjf fjsdklf
輸出:jklf fjlsjf fjsdklf
延伸:
1、cin.getline()實際上有三個參數,cin.getline(接收字符串的變量,接收字符個數,結束字符)
2、當第三個參數省略時,系統默認為'\0'
3、如果將例子中cin.getline()改為cin.getline(m,5,'a');當輸入jlkjkljkl時輸出jklj,輸入jkaljkljkl時,輸出jk
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
注意的問題
1、cin.getline()屬於istream流,而getline()屬於string流,是不一樣的兩個函數
2、當同時使用cin>>,getline()時,需要注意的是,在cin>>輸入流完成之后,getline()之前,需要通過
str="\n";
getline(cin,str);
的方式將回車符作為輸入流cin以清除緩存,如果不這樣做的話,在控制台上就不會出現getline()的輸入提示,而直接跳過,因為程序默認地將之前的變量作為輸入流。