📄 c++的iostream标准库介绍.htm
字号:
<TR>
<TD>bool bad(); <BR><BR>bool eof(); <BR><BR>bool fail();
<BR><BR>bool good();
</TD></TR></TBODY></TABLE><BR> 下例示例,表示出了上面各成员函数的用法:<BR><BR>
<TABLE borderColor=#cccccc width="90%" align=center bgColor=#e7e9e9
border=1>
<TBODY>
<TR>
<TD><FONT color=#008000>//程序作者:管宁</FONT> <BR><FONT
color=#008000>//站点:www.cndev-lab.com</FONT> <BR><FONT
color=#008000>//所有稿件均有版权,如要转载,请务必著名出处和作者</FONT>
<BR><BR>#include<<FONT color=#800000>iostream</FONT>>
<BR><FONT color=#0000ff>using</FONT><FONT
color=#0000ff>namespace</FONT>std; <BR><BR><FONT
color=#0000ff>int</FONT><FONT color=#0000ff>main</FONT>()
<BR>{ <BR><FONT color=#0000ff>int</FONT>a; <BR><FONT
color=#800000>cin</FONT>>>a; <BR><FONT
color=#800000>cout</FONT><<<FONT
color=#800000>cin</FONT>.rdstate()<<endl; <BR><FONT
color=#0000ff>if</FONT>(<FONT color=#800000>cin</FONT>.good())
<BR>{ <BR><FONT
color=#800000>cout</FONT><<"输入数据的类型正确,无错误!"<<endl;
<BR>} <BR><FONT color=#0000ff>if</FONT>(<FONT
color=#800000>cin</FONT>.fail()) <BR>{ <BR><FONT
color=#800000>cout</FONT><<"输入数据类型错误,非致命错误,可清除输入缓冲区挽回!"<<endl;
<BR>} <BR>system("pause");
<BR>}</TD></TR></TBODY></TABLE><BR> 如果错误发生,那么流状态既被标记为错误,你必须清除这些错误状态,以使你的程序能正确适当地继续运行。要清除错误状态,需使用clear()函数。此函数带一个参数,它是你将要设为当前状态的标志值。,只要将ios::goodbit作为实参。
<BR><BR> 示例代码如下:<BR><BR>
<TABLE borderColor=#cccccc width="90%" align=center bgColor=#e7e9e9
border=1>
<TBODY>
<TR>
<TD><FONT color=#008000>//程序作者:管宁</FONT> <BR><FONT
color=#008000>//站点:www.cndev-lab.com</FONT> <BR><FONT
color=#008000>//所有稿件均有版权,如要转载,请务必著名出处和作者</FONT>
<BR><BR>#include<<FONT color=#800000>iostream</FONT>>
<BR><FONT color=#0000ff>using</FONT><FONT
color=#0000ff>namespace</FONT>std; <BR><BR><FONT
color=#0000ff>int</FONT><FONT color=#0000ff>main</FONT>()
<BR>{ <BR><FONT color=#0000ff>int</FONT>a; <BR><FONT
color=#800000>cin</FONT>>>a; <BR><FONT
color=#800000>cout</FONT><<<FONT
color=#800000>cin</FONT>.rdstate()<<endl; <BR><FONT
color=#800000>cin</FONT>.clear(<FONT
color=#800000>ios</FONT>::goodbit); <BR><FONT
color=#800000>cout</FONT><<<FONT
color=#800000>cin</FONT>.rdstate()<<endl;
<BR>system("pause");
<BR>}<BR></TD></TR></TBODY></TABLE><BR> 通常当我们发现输入有错又需要改正的时候,使用clear()更改标记为正确后,同时也需要使用get()成员函数清除输入缓冲区,以达到重复输入的目的。
<BR><BR> 示例代码如下:<BR><BR>
<TABLE borderColor=#cccccc width="90%" align=center bgColor=#e7e9e9
border=1>
<TBODY>
<TR>
<TD><FONT color=#008000>//程序作者:管宁</FONT> <BR><FONT
color=#008000>//站点:www.cndev-lab.com</FONT> <BR><FONT
color=#008000>//所有稿件均有版权,如要转载,请务必著名出处和作者</FONT>
<BR>#include<<FONT color=#800000>iostream</FONT>>
<BR><FONT color=#0000ff>using</FONT><FONT
color=#0000ff>namespace</FONT>std; <BR><BR><FONT
color=#0000ff>int</FONT><FONT color=#0000ff>main</FONT>()
<BR>{ <BR><FONT color=#0000ff>int</FONT>a; <BR><FONT
color=#0000ff>while</FONT>(1) <BR>{ <BR><FONT
color=#800000>cin</FONT>>>a; <BR><FONT
color=#0000ff>if</FONT>(!<FONT color=#800000>cin</FONT>)<FONT
color=#008000>//条件可改写为cin.fail()</FONT><BR>{ <BR><FONT
color=#800000>cout</FONT><<"输入有错!请重新输入"<<endl;
<BR><FONT color=#800000>cin</FONT>.clear(); <BR><FONT
color=#800000>cin</FONT>.get(); <BR>} <BR><FONT
color=#0000ff>else</FONT> <BR>{ <BR><FONT
color=#800000>cout</FONT><<a; <BR><FONT
color=#0000ff>break</FONT>; <BR>} <BR>} <BR>system("pause");
<BR>}</TD></TR></TBODY></TABLE><BR> 最后再给出一个对文件流错误标记处理的例子,巩固学习,代码如下:<BR><BR>
<TABLE borderColor=#cccccc width="90%" align=center bgColor=#e7e9e9
border=1>
<TBODY>
<TR>
<TD><FONT color=#008000>//程序作者:管宁</FONT> <BR><FONT
color=#008000>//站点:www.cndev-lab.com</FONT> <BR><FONT
color=#008000>//所有稿件均有版权,如要转载,请务必著名出处和作者</FONT>
<BR>#include<<FONT color=#800000>iostream</FONT>>
<BR>#include<<FONT color=#800000>fstream</FONT>>
<BR><FONT color=#0000ff>using</FONT><FONT
color=#0000ff>namespace</FONT>std; <BR><BR><FONT
color=#0000ff>int</FONT><FONT color=#0000ff>main</FONT>()
<BR>{ <BR>ifstreammyfile("c:\\1.txt",ios_base::in,0);
<BR><FONT color=#0000ff>if</FONT>(myfile.fail()) <BR>{
<BR><FONT
color=#800000>cout</FONT><<"文件读取失败或指定文件不存在!"<<endl;
<BR>} <BR><FONT color=#0000ff>else</FONT> <BR>{ <BR><FONT
color=#0000ff>char</FONT>ch; <BR><FONT
color=#0000ff>while</FONT>(myfile.get(ch)) <BR>{ <BR><FONT
color=#800000>cout</FONT><<ch; <BR>} <BR><FONT
color=#0000ff>if</FONT>(myfile.eof()) <BR>{ <BR><FONT
color=#800000>cout</FONT><<"文件内容已经全部读完"<<endl;
<BR>} <BR><FONT color=#0000ff>while</FONT>(myfile.get(ch))
<BR>{ <BR><FONT color=#800000>cout</FONT><<ch; <BR>}
<BR>} <BR>system("pause"); <BR>}</TD></TR></TBODY></TABLE>
<P>
<P>[!--empirenews.page--]C++的iostream标准库介绍(7)[/!--empirenews.page--]</P>C语言提供了<STRONG><FONT
color=#ff0000>格式化输入输出</FONT></STRONG>的方法,C++也同样,但是C++的<FONT
color=#ff0000><STRONG>控制符</STRONG></FONT>使用起来更为简单方便,在c++下有两中方法控制格式化输入输出。
<BR><BR> 1.有流对象的成员函数。 <BR><BR> 例如,下列程序以成员函数的方式控制输出的精度:<BR><BR>
<TABLE borderColor=#cccccc width="90%" align=center bgColor=#e7e9e9
border=1>
<TBODY>
<TR>
<TD><FONT color=#008000>//程序作者:管宁</FONT> <BR><FONT
color=#008000>//站点:www.cndev-lab.com</FONT> <BR><FONT
color=#008000>//所有稿件均有版权,如要转载,请务必著名出处和作者</FONT>
<BR><BR>#include<<FONT color=#800000>iostream</FONT>>
<BR><FONT color=#0000ff>using</FONT><FONT
color=#0000ff>namespace</FONT>std; <BR><BR><FONT
color=#0000ff>int</FONT><FONT color=#0000ff>main</FONT>()
<BR>{ <BR><FONT color=#0000ff>float</FONT>pi=3.14159f;
<BR><FONT color=#800000>cout</FONT><<pi<<endl;
<BR><FONT color=#800000>cout</FONT>.precision(2); <BR><FONT
color=#800000>cout</FONT><<pi<<endl;
<BR>system("pause");
<BR>}</TD></TR></TBODY></TABLE><BR> 2.使用C++输入输出控制符,控制符是在拖文件iomanip.h中定义的对象,与成员函数有一样的效果,控制符不必像成员函数学那样单独调用,它可以直接插入流中使用。
<BR><BR> 例如,下列程序以控制符的方式控制输出的精度:<BR><BR>
<TABLE borderColor=#cccccc width="90%" align=center bgColor=#e7e9e9
border=1>
<TBODY>
<TR>
<TD><FONT color=#008000>//程序作者:管宁</FONT> <BR><FONT
color=#008000>//站点:www.cndev-lab.com</FONT> <BR><FONT
color=#008000>//所有稿件均有版权,如要转载,请务必著名出处和作者</FONT>
<BR><BR>#include<<FONT color=#800000>iostream</FONT>>
<BR>#include<<FONT color=#800000>iomanip</FONT>>
<BR><FONT color=#0000ff>using</FONT><FONT
color=#0000ff>namespace</FONT>std; <BR><BR><FONT
color=#0000ff>int</FONT><FONT color=#0000ff>main</FONT>()
<BR>{ <BR><FONT color=#0000ff>float</FONT>pi=3.14159f;
<BR><FONT color=#800000>cout</FONT><<pi<<endl;
<BR><FONT color=#800000>cout</FONT><<setprecision(4);
<BR><FONT color=#800000>cout</FONT><<pi<<endl;
<BR>system("pause");
<BR>}</TD></TR></TBODY></TABLE><BR> 下表我们列出了一些比较常用的控制符号,由于篇幅有限读者请根据自己的需要查阅相关书籍:<BR><BR> 对于iostream标准库来说包含了众多的成员函数,各函数都有其自身的作用,篇幅问题笔者在这里不能一一说明例举,由于标准输入对象cin提供输入的时候会自动以空格作为分界,给我们获取一行带有空格的完整字符串带来了困难,在这里补充一个非常用有的成员函数----getline()。
<BR><BR> 其函数原型为: <BR><BR> getlin(chiar *str,int size,char='\n');
<BR><BR> 第一个参数是字符数组,用于存放整行文本,第二个参数读取的最大字符个数,第三个参数为作为分界界限的字符,默认识是\n,换行符。
<BR><BR> 示例代码如下:<BR><BR>
<TABLE borderColor=#cccccc width="90%" align=center bgColor=#e7e9e9
border=1>
<TBODY>
<TR>
<TD><FONT color=#008000>//程序作者:管宁</FONT> <BR><FONT
color=#008000>//站点:www.cndev-lab.com</FONT> <BR><FONT
color=#008000>//所有稿件均有版权,如要转载,请务必著名出处和作者</FONT>
<BR><BR>#include<<FONT color=#800000>iostream</FONT>>
<BR>#include<<FONT color=#800000>iomanip</FONT>>
<BR><FONT color=#0000ff>using</FONT><FONT
color=#0000ff>namespace</FONT>std; <BR><BR><FONT
color=#0000ff>int</FONT><FONT color=#0000ff>main</FONT>()
<BR>{ <BR><FONT color=#0000ff>char</FONT>str[100]; <BR><FONT
color=#800000>cin</FONT>.getline(str,<FONT
color=#0000ff>sizeof</FONT>(str),'\n'); <BR><FONT
color=#800000>cout</FONT><<str<<endl;
<BR>system("pause");
<BR>}</TD></TR></TBODY></TABLE><BR> 通过上面内容的学习,我们对i/o有了一些基本点基本的认识,现在是该切入正题的时候了,详细学习一下,如何重载左移与右移操作符。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -