get函数函数原型有多个,其中比较简单的2个是:
char get();
istream &get(char c);
前者提取的字符作为函数值,后者提取的字符赋值给参数c,使用get函数从键盘提取自负的格式分别为:
cin.get();
cin.get(字符变量c);
#include<iostream>
using namespace std;
int main(){
char ch;
cout << "输入字符串: ";
while((ch=cin.get())!=EOF)
cout.put(ch);
return 0;
}
window系统下EOF输入为Ctrl+Z,MacOS系统下EOF为control+D。
函数getline()输入一行字符,getline函数原型是:
istream &getline(char *buf, int n, char ch='\n');
功能是最多提取n-1个字符放在buf为首地址的缓冲区中,参数ch为终止符,隐含的终止符为换行符。
使用getline函数从键盘提取字符串的格式为:
cin.getline(字符指针, 整数n, 终止界定符);
输入字符少于n-1时,接受实际输入的字符数,并将缓冲区的回车符清除,如输入字符数不少于n-1时,多余的字符及回车符留在缓冲区。该函数不能接受换行字符'\n'。
该函数终止读取字符的条件为:
- 读取n-1个字符
- 遇到参数指定的终止符
- 遇到文件结束符(ctrl+Z)或回车符
#include<iostream>
using namespace std;
const int SIZE=80;
int main(){
char buf[SIZE];
int lcnt = 0, lmax = -1;
cout << "输入若干行字符:";
while (cin.getline(buf, SIZE)) { // 用ctrl+Z作为输入流结束标志
int count = cin.gcount()-1; // cin.gcount()的输出为包含回车符的串长度
lcnt++;
if (count > lmax)
lmax = count;
cout << "line#" << lcnt << ": " << count << endl;
cout.write(buf, count).put('\n').put('\n');
}
cout << endl;
cout << "最长行字符数: " << lmax << endl;
cout << "总行数: " << lcnt << endl;
return 0;