cin.get()与cin.getline()
来源:互联网 发布:目标利润推算法 编辑:程序博客网 时间:2024/04/29 12:38
cin.get()与cin.getline()区别在于前者对于终止符(terminator)“不抛弃,不放弃”,后者舍弃。string.h中的getline(istream,string)与cin.getline(string,streamsize)类似,但输入字符串后,回车在VC6下可能要按两次,Dev C++下不会。
cin.get()参数有四种,从0个到3个,其中Ch为模板类型参数:
int_type get(); //获得一个字符,可为eof与terminator
istream& get(Ch& p); //获得一个字符给p,可为terminator,不可为eof
istream& get(Ch *p,streamsize n); //定义最大输入,默认terminator为’\n’
istream& get(Ch *p,streamsize n,Ch term); //重定义terminator,不再为’\n’
cin.getline()参数有两种,从2个到3个:
istream& getline(Ch *p,streamsize n);
istream& getline(Ch *p,streamsize n,Ch term);
举三个例子如下:
① char ch;cin>>ch;
//A
char buf[256];cin.get(buf,256);
这时会出错,因为第一次cin>>ch;后,留下了’\n’在缓冲区;再get(buf,256)会立即遇到terminator而终止!须在A处补上cin.get();或cin.ignore();或者cin.clear();cin.sync();
② 而第二个程序(Bjarne书中的)将只打出第一行,因为cin.get()遇到’\n’立即录入,此时cin变为badbit:
while(cin){
cin.get(buf,256);cout<<buf;
}
③ 第三个例子,可以获取buf,因为cin.getline()有抛弃终止符功能(discard the terminator),B行的cin.getline()将抛弃掉ch后面的’\n’,使第三行正常输入。
char ch;cin>>ch;
cin.getline(buf,256); //B
cin.getline(buf,256);
cout<<buf<<endl;
总结:通常复制,用cin.getline()。按字节复制文件,用cin.get(ch)。
用cin>>ch;或cin.get(buf,256);这种形式时就得考虑到残留的’\n’归属问题。
cin.get()参数有四种,从0个到3个,其中Ch为模板类型参数:
int_type get(); //获得一个字符,可为eof与terminator
istream& get(Ch& p); //获得一个字符给p,可为terminator,不可为eof
istream& get(Ch *p,streamsize n); //定义最大输入,默认terminator为’\n’
istream& get(Ch *p,streamsize n,Ch term); //重定义terminator,不再为’\n’
cin.getline()参数有两种,从2个到3个:
istream& getline(Ch *p,streamsize n);
istream& getline(Ch *p,streamsize n,Ch term);
举三个例子如下:
① char ch;cin>>ch;
//A
char buf[256];cin.get(buf,256);
这时会出错,因为第一次cin>>ch;后,留下了’\n’在缓冲区;再get(buf,256)会立即遇到terminator而终止!须在A处补上cin.get();或cin.ignore();或者cin.clear();cin.sync();
② 而第二个程序(Bjarne书中的)将只打出第一行,因为cin.get()遇到’\n’立即录入,此时cin变为badbit:
while(cin){
cin.get(buf,256);cout<<buf;
}
③ 第三个例子,可以获取buf,因为cin.getline()有抛弃终止符功能(discard the terminator),B行的cin.getline()将抛弃掉ch后面的’\n’,使第三行正常输入。
char ch;cin>>ch;
cin.getline(buf,256); //B
cin.getline(buf,256);
cout<<buf<<endl;
总结:通常复制,用cin.getline()。按字节复制文件,用cin.get(ch)。
用cin>>ch;或cin.get(buf,256);这种形式时就得考虑到残留的’\n’归属问题。
- cin.get()与cin.getline()
- cin.get与cin.getline
- cin.getline()与cin.get()
- cin cin.get cin.getline
- cin cin.get cin.getline
- cin,cin.get,cin.getline.
- cin cin.get cin.getline
- cin,cin.get(),cin.getline()
- cin、cin.get()、getline()
- cin、cin.get()、getline()
- cin.get(),cin.getline()
- cin.get()与cin.getline()的区别
- cin.get()与cin.getline()的区别
- cin.get()与cin.getline()的区别
- cin.get( )与cin.getline( )的区别
- cin.get( )与cin.getline( )的区别
- cin.get( )与cin.getline( )的区别
- cin.get( )与cin.getline( )的区别
- 配置JDK、Tomca和mavent环境变量
- Run a dll as an App提示的解决
- Spinner与适配器Adapter使用总结
- Linux下Mongodb安装和启动配置.txt .
- udev--sysfs-hal
- cin.get()与cin.getline()
- Android视频文件格式解析相关分析
- ASP.NET MVC3 AJAX 上传图片示例
- fastsson---高性能JSON开发包
- Linux下Hadoop集群安装详细步骤 .
- 简短总结一下C#里跨线程更新UI
- 深度剖析消息反射机制
- Unable to code design using identities in this team: no private keys available
- UIImage的几种应用