cin.get() 与 cin.getline() 很相似,参数只能接受char数组。
只是cin.get() 把分界符保留在输入流中,而cin.getline()丢弃分界符。
下面代码示例详细说明:
#include <iostream>
#include <string>
int main()
{
using namespace std;
string s;
char ch[20];
cout << "Please enter a string : \n";
// cin.getline(s,2); //error
// getline(s,cin); //error
cout << "s: " << s << endl;
cout << "cin.get(ch,20):\n";
cin.get(ch,20); //读取一行,或直到读满19个字符。 换行符'\n'保留在输入流中
cout << "ch: " << ch << endl;
cout << "cin.get(ch,20,'#'):\n";
cin.sync(); //因为'\n'被保留在输入流中,这里清空流。
cin.get(ch,20,'#'); //直到读满19个字符(可多行,或者读取到'#','#'被放在输入流中)。
cout << "ch: " << ch << endl;
//cin.get()可以用来接收字符,不会略过空白字符,包括空格、回车、Tab等。返回类型为整型。
cout << "Next chracter: " << (char)cin.get() <<endl;
cout << "cin.getline(ch,20):\n";
cin.sync();
cin.getline(ch,20); //读取一行,或直到读满19个字符。丢弃换行符'\n'.
cout << "ch: " << ch << endl;
cout << "cin.getline(ch,20,'#'):\n";
// cin.sync();
cin.getline(ch,20,'#'); //直到读满19个字符(可多行,或者读取到'#','#'被丢弃)。
cout << "ch: " << ch << endl;
//cin.get(ch[0])可以用来接收字符,不会略过空白字符,包括空格、回车、Tab等。返回类型为地址。
cin.get(ch[0]);
cout << "Next chracter: " << ch[0] <<endl;
return 0;
}
getline() 是在string头文件中,定义的是一个全局的函数,函数声明是istream& getline ( istream& is, string& str, char delim )与
istream& getline ( istream& is, string& str );接受参数为string类型。
cin.getline()是istream的成员函数,函数声明是istream& getline (char* s, streamsize n )与istream& getline (char* s, streamsize n, char delim );接受参数为char数组。
下面是getline()函数的代码示例:
#include <iostream>
#include <string>
int main()
{
using namespace std;
string s;
char ch[20];
// getline(cin,ch); //error
cout << "ch :" << ch << endl;
cout << "Input string (getline(cin,s)) :\n";
getline(cin,s);
cout << "s :" << s << endl;
cout << "Input string (getline(cin,s,'#')) :\n";
getline(cin,s,'#'); //丢弃分界符'#'
cout << "s :" << s << endl;
cout << "Next chracter: " << (char)cin.get() <<endl;
return 0;
}