C++学习-输入输出
出入平安
1 输出流
1.1 标准类型数据的输出
标准类型的数据可以通过对cout对象执行流插入运算<<来实现。流插入运算是一个二元运算符。对于cout<<123,它的第一个运算对象是输出流对象cout,第二个运算对象一个二元运算符。有插入入运算的返回值为第一个参数的引用。所以刘插入运算允许连续使用。如cout<<x<<y。
输出指针变量会是一个16进制的数值,不过输出指向字符的指针需要先将其强制类型转化为(*void)
1.2 通过成员函数put输出字符
字符型数据还可以用成员函数put来输出。put函数有一个字符类型的形式参数,它的返回值是调用put函数的对象的引用。如:
cout.put('A');
cout.put(65);
将字符A显示在屏幕上,因为返回对象的引用,所以可以连续调用put函数
cout.put('A').put(65);
1.3 通过write成员函数进行无格式的输出
cout.write(char*,NUM);
第一个参数是指向字符的指针,表示字符数组;第二个参数是一个整型值,表示输出的字符个数(实际应该是字节个数)。
2 输入流
2.1 标准类型数据的输入
标准类型数据的输入时通过流提取运算符>>实现的,它会跳过输入流中的空白字符。cin>x>>y;的原理和cout<x<<y;差不多。
对于cin,如果输入操作操作成功, 变量获得了正确的值,则隐式的转换成true;如果不成功,包括遇到文件结束标记(EOF,它的值通常是-1),变量没有得到所需要的值,则转换为flase。
2.2 通过get和getline成员函数进行字符和字符串的输入
get函数有三种格式:
- 不带参数的 get 函数从当前的输入流对象中读入一个字符,包括空白字符以及表示文件结束的EOF(win下是通过Ctrl+Z)输入,并将读入值作为函数的返回值返回,例如,语句
while( (ch=cin.get()) !=EOF) cout<<ch;
- 第二种格式的 get 函数带一个字符类型的引用参数,它将输入流中的下一个字符(包括空白字符)存储在参数中,它的返回值是当前输入流对象的引用。所以你可以像put一样连续使用 get 函数,如:
//给ch1,ch2,ch3赋值
char ch1,ch2,ch3;
cin.get(ch1).get(ch2).get(ch3);
//或者
ch3=cin.get(ch1).get(ch2);
- 第三种格式的get函数用于输入字符串,它有三个参数:字符数组、数组规模和表示输入结束的结束符(输入符的默认值为'\n')。这个函数会在遇到结束符或者读取比指定数组规模少一个字符后结束(为 \0 留位置)。
输入结束时函数会自动将空字符'\0'插入到字符数组中。结束符任然留在输入流中。
cin.get(ch,85,' '); //不写第三个参数默认是'\n',如果时如果遇上' '会停止输入,并保留输入缓冲区中的' '。
getline和第三种格式的get几乎完全相同,唯一的区别(我所知道的)就是遇到结束符时会删除结束符。
cin.getline(ch,85,' ') ////不写第三个参数默认是'\n',如果时如果遇上' '会停止输入,并删除输入缓冲区中的' '。
2.3 通过read函数进行无格式的输入
cin.read(char*,int);
cin.read(arr,10) //读入10个字节放入字符数组arr
遇到E0F操作结束。
2.4 getline
用法:接收一个字符串,可以接收空格并输出
函数原形:getline(cin,string类型的变量,结束符)
默认换行符
会删除结束符。