C++二级复习7(输入输出流)
1、C++输入与输出主要包括的方面:
a.标准IO:对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示屏。
b.文件IO:以外存(磁盘、光盘)为对象进行输入输出。
c.(字符串输入输出)串IO:对内存中指定的空间进行输入输出。通常指定一个字符数组作为存储空间(实际上可以利用该空间存储任何信息)
2、C语言使用函数进行输入输出,C++使用类对象。
3、与类库有关的头文件
iostream 包含基本信息
fstream 文件IO
strstream 串IO
stdiostream C/C++混合使用IO
iomanip 格式化IO
4、iostream头文件中定义的4种流对象
对象 含义 对应设备 C语言中对应的标准文件
cin 标准输入流 键盘 stdin
cout 标准输出流 屏幕 stdout
cerr 标准错误流 屏幕 stderr
clog 标准错误流 屏幕 stderr
5、标准输出流
cout流对象(console output)
cout流在内存中开放了一个缓冲区,用来存放流中的数据。当cout流中插入一个endl时,不论缓冲区是否已满,都立即输出流中所有数据,然后,插入一个换行符,并刷新流(清空缓冲区)。如果是插入’\n’,则值输出所有内容和换行,不刷新流(此点视编译系统而定)
cerr流对象(console error)
在控制台上显示错误信息,不经缓冲区直接在显示器上显示相关信息。
clog流对象(console log)
同cerr差不多,将信息存放在缓冲区中,缓冲区慢后或遇到endl时,向显示器输出。
6、C++标准格式输出,另起一文专门用来学习和参考
7、用流成员函数 put 输出字符
ostream中专门用来输出单个字符的成员函数,put 函数参数可以是字符或字符的ASCII代码(也可以是一个整型表达式)
cout.put('a');
cout.put(65+32);
#include <iostream>
using namespace std;
int main()
{
char * p = "ABCD";
for(int i=3;i>=0;i--)
cout.put(*(p+i));
cout.put('\n');
return 0;
}
ostream 中保留了C语言中起同样作用的 puchar() 函数。
8、标准输入流
a. cin流
" >> " 从流中提取数据时,通常跳过输入流中的 空格、Tab键、换行符等空白字符
当按下 Enter 键后,该行数据才被送入键盘缓冲区,形成输入流,>>才能提取数据
当遇到无效字符或文件结束符时,cin处于出错状态,无法正常提取数据。一般以Ctrl+Z 或 Ctrl+D表示文件结束。
当cin处于出错状态时,测试cin的值,可以得到 0 ,若正常状态,cin 是一个非零值。
if(!cin)
cout<<"error"<<endl;
b. 用于字符输入的流成员函数
源自istream 的一些成员函数,
用 get 函数读入一个字符,
无参形式:cin.get()
输入流中提取一个字符(包括空白字符),函数返回值就是读取的字符。遇到文件结束符,就返回EOF
while( (c = cin.get() ) !=EOF)
cin.get();
getchar() 函数与之类似,C++可用
有一个参数的形式:
cin.get(ch);
从输入流中读取一个值,赋给字符 ch ,返回值成功返回非零值,失败返回 0(文件结束符)
有3个参数的形式:
cin.get(字符数组,字符个数,终止字符) 或 cin.get(字符指针,字符个数n,终止字符)
从输入流中读取 n-1 个字符,赋给指定的字符数组或指针指向的数组。若读完前遇到终止字符,就结束。返回值,成功返回非零值,失败返回 0(文件结束符)
用成员函数 getline 读入一行字符
getline( 字符数组(或字符指针),字符个数n, 终止标志字符)
用法同3个参数的get
c. istream 的其他成员函数
eof函数(end of file)
表示“文件结束”,若到达文件末尾(或遇文件结束符),eof 函数值为非零值,否则为 0
char c;
while( !cin.eof() )
if( ( c = cin.get() )!=' ')
cout.put(c);
peek 函数
观测下一个字符,调用形式
c = cin.peek();
cin.peek的函数的返回值是返回指向的当前字符,只是观测,指针位置停留在当前位置,不会后移。访问时文件结束符,函数值为EOF(-1)
putback 函数
调用形式为
cin.putback(ch);
作用是 将前面用 get 或 getline 函数从输入流中读取的字符 ch 返回输入流,插入指针当前位置,以供后面读取。
ignore 函数
cin.ignore(n,终止字符);
作用是,跳过输入流中 n 个字符,或遇到指定的终止字符时,提前结束(此时跳过包括终止字符在内的若干字符)
cin.ignore(5,'A');
跳过输入流中5个字符,或遇到‘A’后就不再跳了
ignore();
也可以不带参数或带一个,等价于 ignore(1,EOF)
cin.get(ch,20,'\');
ignore();
cin,get(ch,20,'\');
执行完第一个语句后,输入流中仍有‘\’,若无第二个语句,第三个语句遇到就直接结束了。此时就可以,用第二个语句跳过 ’ \ ’