关于cin

关于cin

  • cin.getline()第一个参数是存放位置的指针,第二个参数是读取的最大大小。读取指定大小或者读到换行符为止,并读取换行符,丢弃。

  • cin.get()参数同上,但是不读取换行符,需要使用cin.get()无参数的版本将换行符读取掉,无参数版本返回值是读取到的字符,此外有参数返回值是 istream 对象,所以可以拼接,例如cin.get(参数).get(). 还有一个读取单个字符的版本cin.get(char)cin.get()cout.put(ch)可以用来替换C语言中的getchar();putchar(ch)如果具体实现只有这一个char类型参数的版本,可以用来输出int类型,如cout.put(int)否则需要cout.put(char(int))

  • char ch; cin >> ch; cin在读取char值的时候与读取其他基本类型一样将忽略空格和换行符。

  • 检测到EOF后,cin将两位(eofbitfailbit) 都置为1,cin.eof()可以检测eofbit 是否为1,cin.fail() 可以检测 failbiteofbit 是否被置为 1;cin对象,可以被转换为bool值,比上面两个函数更通用,因为可以检测到其他失败原因,如磁盘故障。可以使用cin.clear()重置输入流

  • ifstream inFile;
    inFile.open('test.txt');
    //判断文件是否成功打开很重要。
    if(!inFile.is_open){
    	exit(EXIT_FAILURE);
    }
    
  • eof()判断是否到达EOFfail()方法检查EOF 和类型不匹配,good()方法指出最后一次读取输入的操作是否成功。

  • cout.write() 方法显示整个字符串,第一个参数提供要显示的字符串的地址,第二个参数指出要显示多少个字符。write()方法并不会遇到空字符自动停止打印字符,而是打印指定数目字符,即使超出字符串的边界。

  • 修改显示进制:十进制:dec(cout)或者 cout << dec, 十六进制 hex ,八进制 oct.

  • 调整显示字段宽度: cout.width(int i)返回之前的字段宽度,只影响下一个显示的项目,之后恢复默认值,右对齐,C++不会截短数据

  • 填充字符,C++ 默认空格填充字段中未被使用的部分,可以使用cout.fill('*')改为星号,效果持续。

  • 设置浮点是显示精度:cout.precision(int i)默认是6位数字,效果持续

  • cout.setf()方法包括其他字段显示的调整方法

  • cin.get() 和 cin.getline()还可以有第三个参数,char类型表示读取输入的分界符。

  • istream & ignore(int = 1, int = EOF) 用于读取并丢弃第一个参数个字符或者直到第二个参数的分界符。cin.ignore(255,'\n');

  • cin.get() 和cin.getline() 读取一行时空行与空间不足问题,getline() 遇到空行,会读取换行符,所以不会设置failbit,(可以通过判断存储的首字节是否是'\0'来判断是否是空行),getline()如果读取了最大数目(第二个参数减1)的字符,且下一个不是换行符,则设置failbit,已有内容已被正确存到存储位置,如果用clear() 方法清楚了failbit状态,还可以继续读出缓冲剩下内容 , 而get()由于不读取换行并丢弃,所以即使空间不足,行中还有其他字符,也不设置failbit,可以用peek查看下一个输入字符,进行判断。

  • char gross[144]; cin.read(gross,144); read() 方法区别在于不会在输入后加入空字符,因此不能将输入转换为字符串。

  • peek()方法返回输入中的下一个字符,但不抽取输入流中的字符。

  • gcount() 方法 返回最后一个非格式化抽取方法读取的字符数。get(),getline() , read(), ignore()方法读取,不是由运算符(>>)读取的,速度比strlen()读取内容慢。

  • cin.putback(char);将一个char字符,放入之后输入语句读的第一个字符。x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值