STL学习(11):输入输出流

  • 标准输入输出流
  • 文件输入输出流
  • 字符串输入输出流

标准输入输出流

即标准输入流cin、标准输出流cout。前者指键盘,后者指显示器。

1插入符与提取符

在输入输出流类库中,重载了两种运算符以简化输入输出流的使用,运算符<<常用做输入输出流的插入符,表明“输出到”,例如cout << “Hello”是把字符串“Hello”输出到屏幕上;运算符>>常用做提取符,表明“赋值给”,例如 cin >> i 是把键盘输入的信息赋值给i。

标准输入给不同类型变量赋值的不足示例。

#include <iostream>
using namespace std;
int main() {
	int i;
	char str[20];
	cout << "请输入一个整形数及一个字符串:" ;
	cin >> i >> str;
	cout << "i=" << i << endl ;
	cout << "str=" << str << endl ;
	return 0;
}

若在命令行上输入1 how are you?,回车后执行结果为:

请输入一个整形数及一个字符串:1 how are you?
i=1
str=how

实际上在交互过程中,经常需要一次输入一行字符序列,当这些字符安全地存储到缓冲区后再进行扫描和转换工作。在该示例中,并不能把输入的串完全的放到内存中,下面讲到的get系列函数很好的解决了这个问题。

2 get系列函数  

常用的有3个函数。

(1)int get() ;    返回输入流一个字符的ASCII值。

(2)istream& get(unsigned char* pszBuf, int nBufLen, char   delim=’\n’);     

pszBuf: 指向字符缓冲区的指针,用于保存结果     nBufLen: 缓冲区长度     delim: 结束字符,根据结束字符判断何时停止读入操作

(3)istream& getline(unsigned char* pszBuf, int nBufLen, char delim=’\n’);     参数解释同get

第2个get函数及getline函数都是读一行记录,那么它们有什么区别呢?细微而重要的区别在于:当遇到输入流中的界定符(delim,即结束字符)时get()停止执行,但是并不从输入流中提取界定符,直接在字符串缓冲区尾部加结束标志’\0’;函数getline()则相反,它将从输入流中提取界定符,但仍然不会把它存储到结果缓冲区中。 

#include <iostream>
using namespace std;
int main() {
	char szBuf[60]; //定义输入字符串接收缓冲区
	cout << "请输入一个字符串:" ;
	int n = cin.get();  //先读1个字符
	cin.getline(szBuf, 60); //接着读1行字符,遇到结束符’\0’停止
    cout << n << endl;
    cout << "The received string is: " << szBuf << endl;
    return 0;
}
//输出结果
请输入一个字符串:abcde
97
The received string is: bcde

3 处理流错误  

获取状态信息的函数如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值