当前位置:网站首页>关于istream输入流对象cin的输入函数
关于istream输入流对象cin的输入函数
2022-06-09 05:18:00 【kaims】
I/O
输出流:ostream
输入流:istream
输入输出流:iostream
iostream中定义了输入流对象cin与输出流对象cout。
cin是一个istream类的对象,它从标准输入设备(键盘)获取数据,程序中的变量通过流提取运算符>>从流中提取数据。流提取符“>>”从流中提取数据时通常跳过输人流中的空格、tab键、换行符等空白字符。注意:只有在输入完数据再按回车键后,该行数据才被送入键盘缓冲区,形成输入流,提取运算符>>才能从中提取数据。
cout是一个ostream类的对象,它通过流插入运算符<<向输出设备(屏幕)输出其后的变量。程序中的变量借由cout对象并通过流插入运算符<<向输出设备输出。
在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据。
cin>>
/*cin>>T
接受一个字符串,遇空格tab换行结束,返回cin对象。
>>(流提取符)用于从cin输入流中提取指定类型数据赋值给T
*/
若缓冲区中第一个字符是空格、tab或换行这些分隔符时,cin>>会将其忽略并清除,继续读取下一个字符。
若缓冲区为空,则继续等待。
分隔符残留在缓冲区。
cin.get()
int cin.get();//接受一个字符(包括空格tab换行)并返回该字符的asc码值
istream& cin.get(char& var);//接受一个字符(包括空格tab换行)
istream& cin.get(char* s, streamsize n);//以指定长度读取字符串(读取到n-1个字符),遇换行符结束读取
istream& cin.get(char* s, streamsize n, char delim);以指定长度读取字符串,遇指定的字符delim结束读取
//还有两种get的重载形式,但暂时不用
//使用第三、四种get,注意结束符需要用第一或第二中get清除缓冲区的结束符,否则会出错
结束符残留在缓冲区。
cin.getline()
//从标准输入设备键盘读取一串指定长度的字符串,并以指定的结束符结束。
istream& cin.getline(char* s, streamsize count);
istream& cin.getline(char* s, streamsize count, char delim);
与cin.get()区别:
- 结束符不会残留在缓冲区。
- cin.get(char*,int)当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。但是cin.getline(char*,int)当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行。
getline()
C++中定义了一个在std名字空间的全局函数getline,因为这个getline函数的参数使用了string字符串,所以声明在了< string>头文件中了。
//从输入流is中读取一行到字符串str中,当遇到如下三种情况会结束读操作:1)到文件结束,2)遇到结束符,3)输入达到最大限度。
istream& getline(istream& is, string& str);
istream& getline(istream& is, string& str, char delim);
注意,getline遇到结束符时,结束符不会残留在缓存中。因此,进行从键盘读取一行字符时,建议使用getline,较为安全。
注:如果输入流是文件输入流(即读取文件),则就变为读取文件了。
gets()
gets是C中的库函数,在< stdio.h>申明,从标准输入设备读字符串,可以无限读取,不会判断上限,以回车结束或者EOF时停止读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。
//函数原型:char *gets( char *buffer );
cin.good()与cin.fail()用于判断cin输入的类型是否符合要求
int a;
cin >> a;
if (!cin.good())
//输入类型错误
//do something...
另,
// <<与>>的重载实例
#include <iostream>
using namespace std;
class Complex {
public:
friend ostream& operator << (ostream&,Complex&); //声明重载运算符“<<”
friend istream& operator >> (istream&,Complex&); //声明重载运算符“>>”
private:
double real;
double imag;
};
ostream& operator << (ostream& output,Complex& c) {//定义重载运算符“<<”
output<<"("<<c.real<<"+"<<c.imag<<"i)";
return output;
}
istream& operator >> (istream& input,Complex& c) {//定义重载运算符“>>”
cout<<"input real part and imaginary part of complex number:";
input>>c.real>>c.imag;
return input;
}
边栏推荐
- The 27th issue of product weekly report | members' new interests of black users; CSDN app v5.1.0 release
- June 2022 Tsinghua Management Tsinghua University Ning Xiangdong
- Data Summit 2022 大会资料分享(共23个)
- MQ message loss, message consistency, repeated consumption solution
- 崔健没变,北汽极狐该做出改变了
- ^25进程与线程
- Heap and priority queues
- Stack
- 力扣今日题-1037. 有效的回旋镖
- [it] Foxit PDF retention tool selection
猜你喜欢

wps ppt背景图片如何换颜色

Practice and some ideas on the transformation of sonarlint code specification

AI video cloud: a good wife in the era of we media

Caching mechanism in transformer

Stack

Mécanisme de mise en cache dans le transformateur

Talk about 10 tips to ensure thread safety

Apache devlake code base guide

Product weekly report issue 28 | CSDN editor upgrade, adding the function of inserting existing videos

MQ message loss, message consistency, repeated consumption solution
随机推荐
Cloud computing technology
How WPS ppt pictures come out one by one
Marathon环境下fastdfs和vsftpd和miniIo文件服务器搭建的方式
Heap and priority queues
^25 processes and threads
Listing of Yubang new material on Shenzhen Stock Exchange: market value of 4.7 billion, net profit deducted in the first quarter decreased by 18%
LRU cache
Talk about 10 tips to ensure thread safety
The 27th issue of product weekly report | members' new interests of black users; CSDN app v5.1.0 release
Basic cluster deployment - kubernetes simple
Typescript learning [5] type
Do you know the ranking of hybrid cloud management platforms? Look here!
模式识别大作业——PCA&Fisher&KNN&Kmeans
Summary of Android Engineer interview experience with 5 years' work experience, summary of real interview questions of Ali + Tencent + byte jump
How to build fastdfs, vsftpd and miniio file servers in marathon environment
2022焊工(初级)特种作业证考试题库及模拟考试
故障排查:阿里云轻量应用服务器中的MySQL容器自行停止
基础集群部署 - kubernetes-simple
queue
When classical music meets NFT