c++中用于字符输入的函数

本文详细介绍了C++中用于输入输出流的get()、getline()和read()函数。get()函数可用于读取单个或多个字符,而getline()则用于读取多行文本,两者都处理换行符和终止符。read()函数则用于从输入流中读取指定数量的字符到内存空间。文章还对比了它们在处理字符串时的区别,并提到了使用string对象存储字符串时应使用全局getline()函数的情况。
摘要由CSDN通过智能技术生成

在这里插入图片描述

1.get()

使用gas函数可以输入一个或多个字符,有多种重载格式,其函数原型如下:

(1)int get();
(2) istream& get(char& c);
(3) istream& get(char * s, streamsize n);
(4) istream& get(char* s, streamsize n, char delim);
(5) istream& get(streambuf& strbuf);
(6) istream& get(streambuf& strbuf, char delim);

其中,前两个函数可以从输入流中读取一个字符,
第(1)个函数返回值是读取的字符的
ASCⅡ值,
第(2)个函数把读取的字符存储在变量c中;
第(3)个和第(4)个函数从输入流中读取二1个字符或者遇到换行符n(第(3)个函数)遇到 delim(第(4)个函数)表示的终止符结束,读取的字符存储到C语言风格的字符串s中,在字符串s的末尾自动添加空字符10;
最后两个函数从输入流中读取字符插入 strbuf表示的输出流中,遇到\n或 delim表示的终止符结束。
注意:
多余的字符、换行符‘\n’、终止符delim仍然留在输入流中
例如:

char ch;
ch = cin.get();//使用第一个函数
cin.get(ch);   //使用第二个函数
char str[20];
cin.get(str, 20);//最多读取19个字符,或者遇到换行符结束
cin.get(str, 20, '*');//最多读取19个字符,或者遇到‘*’结束
cin.get(*cout.rdbuf());//从输入流中读取字符并输出到显示器上,遇到换行符结束
cin.get(*cout.rdbuf(),'*');// 从输入流中读取字符并输出到显示器上,遇到‘*’结束

在这里插入图片描述

2.getline()

getline()函数从输入流中提取多个字符。其函数原型如下:

(1) istream& getline(char * s, streamsize n);
(2) istream& getline(char* s, streamsize n, char delim);

从输入流中读取n-1个字符,遇到换行符"n’结束(第(1)个函数)或者遇到终止符delim(第(2)个函数)结束,把读取的字符存储在C语言风格的字符串s中,在s的末尾自动添加空字符‘\0’。
与get()函数不同的是, getline(函数的换行符n和终止符deim从输入流中读出并丢弃,不存储在字符串s中。
如果未读取到字符,或者读取n-1个字符后仍然没有遇到终止符,流状态标志 failbit被设置。如果终止符恰好是第n个字符,即读取n-1个字符后恰好遇到终止符,流状态标志 failbit不会被设置。
注意:
用get(函数或 getline()函数读取多个字符构成的字符串只能存储到C语言风格的字符数组中,如果用 string对象存储字符串,则不能使用上述两个 Istream的成员函数,应该使用全局函数 getline()。其函数原型如下:

(1)istream& getline(istream& is, string& str);
(2)istream& getline(istream& is, string& str, char delim);
(3)istream& getline(istream&& is, string& str);
(4)istream& getline(istream&& is, string& str, char delim);

我们主要使用前两个重载函数,其功能是从输入流is中读取字符存储到 string类型的对象str中,遇到换行符\n’(第(1)个函数)或终止符 delim(第(2)个函数)时结束。例如:

string s;
getline(cin, s);

3.read()

read()函数原型如下:

istream& get(char * s, streamsize n);

**函数功能:**从输入流中读取n个字符存储到首地址是s的内存空间中。如果还未读取
n个字符就到文件末尾,则把实际读取的字符串存储到s中,流状态标志 eorbit和 failbit被设置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落春只在无意间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值