C++语言的I/o使用方法详解
构造器
语法:
fstream( const char *filename, openmode mode ); |
Tstream, ifstream, 和ofstream对象用于文件输入/输出. 可选择模式通过使用ios stream mode flags定义了一个文件如何打开。filename 指定被打开的文件并与流相关联。例如,下面的代码读取输入的数据并追加结果到一个输出文件中.
ifstream fin( "/tmp/data.txt" );
ofstream fout( "/tmp/results.txt", ios::app );
while( fin >> temp )
fout << temp + 2 << endl;
fin.close();
fout.close();
输入和输出文件流可以相似的方式被使用在C++预定义I/O流,cin 和 cout.
bad
语法:
bool bad(); |
如果当前的流发生致命的错误,bad()函数返回true,否则返回false。
相关主题: good()
clear
语法:
void clear( iostate flags = goodbit ); |
函数clear()清除与当前流相关联的标志。默认标志是goodbit它清除所有标志.否则只有指定的标志被清除。
相关主题: rdstate()
close
语法:
void close(); |
Tclose()函数关闭相关的文件流。
相关主题: open()
eof
语法:
bool eof(); |
如果到达相关联的输入文件的末尾,eof()函数返回true,否则返回false。例如:
char ch;
ifstream fin( "temp.txt" );
while( !fin.eof() ) {
fin >> ch;
cout << ch;
}
fin.close();
相关主题: bad(), fail(), good(), rdstate(), clear()
fail
语法:
bool fail(); |
如果当前流发生错误fail()函数返回true ,否则返回false 。
相关主题: good(), eof(), bad(), clear(), rdstate()
fill
语法:
char fill(); |
函数fill()可以返回当前填充字符,或者设置当前填充字符为ch 。填充字符被定义为用来填充字符,当一个数字比较指定宽度T小时。默认的填充字符是空格。
相关主题: precision(), width()
flags
语法:
fmtflags flags(); |
flags()函数或者返回当前流的格式标志,或者为当前流设置标志为f。
flush
语法:
ostream &flush(); |
flush()函数可以引起当把前流的缓冲区写出到附属设备中去。这个函数对于打印调试信息很用处,因为当程序有机会把缓冲区内容写出到屏幕之前,程序会被中断。灵活地使用flush()可以保证你所有的调试状态都实在的打印出来。
gcount
语法:
streamsize gcount(); |
函数gcount()被用于输入流,并返回上一次输入操作被读入的字符的数目。
相关主题: get(), getline(), read()
get
语法:
int get(); |
get()函数被用于输入流,和以下这些:
- 读入一个字符并返回它的值,
- 读入一个字符并把它存储在ch,
- 读取字符到buffer直到num - 1个字符被读入, 或者碰到EOF或换行标志,
- 读取字符到buffer直到已读入num - 1 个字符,或者碰到EOF或delim(delim直到下一次不会被读取),
- 读取字符到buffer中,直到碰到换行或EOF,
- 或是读取字符到buffer中,直到碰到换行,EOF或delim。(相反, delim直到下一个get()不会被读取 ).
例如,下面的代码一个字符一个字符的显示文件temp.txt中的内容:
char ch;
ifstream fin( "temp.txt" );
while( fin.get(ch) )
cout << ch;
fin.close();
相关主题: put(), read(), getline()
getline
语法:
istream &getline( char *buffer, streamsize num ); |
getline()函数用于输入流,读取字符到buffer中,直到下列情况发生:
- num - 1个字符已经读入,
- 碰到一个换行标志,
- 碰到一个EOF,
- 或者,任意地读入,直到读到字符delim。delim字符不会被放入buffer中。
good
语法:
bool good(); |
如果当前流没有发生错误,函数good()返回true ,否则返回false。
相关主题: bad(), fail(), eof(), clear(), rdstate()
ignore
语法:
istream &ignore( streamsize num=1, int delim=EOF ); |
ignore()函数用于输入流。它读入字符,直到已经读了num 个字符(默认为1)或是直到字符delim 被读入(默认为EOF).
open
语法:
void open( const char *filename ); |
函数open()用于文件流。它打开filename 并将其与当前的流相关联。可以选择的模式有:
模式 | 含义 | ||
---|---|---|---|
ios::app | 添加输出 | ||
ios::ate | 当已打开时寻找到EOF | ||
ios::binary | 以二进制模式打开文件 | ||
ios::in | 为读取打开文件 | ||
ios::out | 为写入打开文件 | ios::trunc | 覆盖存在的文件 |
如果open()失败,当用于一个布尔表达式中时,作为结果的流会给出对错误的评估。例如:
ifstream inputStream("file.txt");
if( !inputStream ) {
cerr << "Error opening input stream" << endl;
return;
}
相关主题: close(), fstream(), ifstream(), ofstream(),
peek
语法:
int peek(); |
函数peek()用于输入流中,并返回在流中的下一个字符或如果是处于被入的文件的结尾处返回EOF。peek()不会把字符从流中移除。
precision
语法:
streamsize precision(); |
precision()函数设置或返回当前要被显示的浮点变量的位数。例如,下面的代码:
float num = 314.15926535;
cout.precision( 5 );
cout << num;
displays
314.16
put
语法:
ostream &put( char ch ); |
函数put()用于输出流,并把字符ch写入流中。
putback
语法:
istream &putback( char ch ); |
putback()函数用于输入流,并且返回以前读的字符ch到输入流中。
相关主题: peek()
rdstate
语法:
iostate rdstate(); |
rdstate()函数返回当前流的状态。iostate 对象有下面这些标志:
标志 | 含义 |
---|---|
badbit | 发生致命的错误 |
eofbit | 已经发现EOF |
failbit | 一个非致命性错误已经发生 |
goodbit | 没有发生错误 |
相关主题: eof(), good(), bad(), clear(), fail()
read
语法:
istream &read( char *buffer, streamsize num ); |
函数read()用于输入流,在将字符放入buffer 之前从流中读取num 个字节。如果碰到EOF,read()中止,丢弃不论多少个字节已经放入。例如:
struct {
int height;
int width;
} rectangle; input_file.read( (char *)(&rectangle), sizeof(rectangle) );
if( input_file.bad() ) {
cerr << "Error reading data" << endl;
exit( 0 );
}
相关主题: gcount(), get(), getline(), write()
seekg
语法:
istream &seekg( off_type offset, ios::seekdir origin ); |
函数seekg()用于输入流,并且它将重新设置"get"指针到当前流的从origin偏移offset个字节的位置上,或是置"get"指针在position位置。
相关主题: seekp(), tellg(), tellp()
seekp
语法:
ostream &seekp( off_type offset, ios::seekdir origin ); |
seekp()函数用于输出流,但在其它方面和seekg()很类似。
相关主题: seekg(), tellg(), tellp()
setf
语法:
fmtflags setf( fmtflags flags ); |
函数setf()设置当前流的格式化标志为flags。可选标志needed 只允许flags标志和needed标志都被设置。返回值是前面设置的标志。 例如:
int number = 0x3FF;
cout.setf( ios::dec );
cout << "Decimal: " << number << endl;
cout.unsetf( ios::dec );
cout.setf( ios::hex );
cout << "Hexadecimal: " << number << endl;
提示,上面的代码和下面的代码的功能是一致的:
int number = 0x3FF;
cout << "Decimal: " << number << endl << hex << "Hexadecimal: " << number << dec << endl;
参考 manipulators.
sync_with_stdio
语法:
static bool sync_with_stdio( bool sync=true ); |
sync_with_stdio()函数有打开或关闭使用C++风格I/O系统混合C风格的I/O系统的功能。
tellg
语法:
pos_type tellg(); |
tellg()函数用于输入流,并返回流中"get"指针的当前位置。
相关主题: seekg(), seekp(), tellp()
tellp
语法:
pos_type tellp(); |
tellp()函数用于输出流中,并返回在流中当前"put"指针的位置。 例如,下面的代码显示了当一个文件指针写入一个流的时候的情形:
string s("In Xanadu did Kubla Khan..."); ofstream fout("output.txt"); for( int i=0; i < s.length(); i++ ) {
cout << "File pointer: " << fout.tellp();
fout.put( s[i] );
cout << " " << s[i] << endl;
} fout.close();
相关主题: seekg(), seekp(), tellg()
unsetf
语法:
void unsetf( fmtflags flags ); |
函数unsetf()用于清除与当前流相关的给定的标志flags。什么标志呢?
width
语法:
int width(); |
函数 width()返回当前的宽度。可选择参数w用于设定宽度大小。宽度是指每一次输出中显示的字符的最小数目。例如:
cout.width( 5 );
cout << "2";
displays
2
(在一个'2'的后面紧跟着四个空格)
相关主题: precision(), fill()
write
语法:
ostream &write( const char *buffer, streamsize num ); |
write()函数用于输出流,从buffer中写num个字节到当前输出流中。
C++语言的I/o使用方法详解的更多相关文章
- session的使用方法详解
session的使用方法详解 Session是什么呢?简单来说就是服务器给客户端的一个编号.当一台WWW服务器运行时,可能有若干个用户浏览正在运正在这台服务器上的网站.当每个用户首次与这台WWW服务器 ...
- ecshop后台增加|添加商店设置选项和使用方法详解
有时候我们想在Ecshop后台做个设置.radio.checkbox 等等来控制页面的显示,看看Ecshop的设计,用到了shop_config这个商店设置功能 Ecshop后台增加|添加商店设置选项 ...
- C++调用JAVA方法详解
C++调用JAVA方法详解 博客分类: 本文主要参考http://tech.ccidnet.com/art/1081/20050413/237901_1.html 上的文章. C++ ...
- BigDecimal 使用方法详解
BigDecimal 使用方法详解 博客分类: java基础 bigdecimalmultiplyadddivide BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (sca ...
- Clone使用方法详解【转载】
博客引用地址:Clone使用方法详解 Clone使用方法详解 java“指针” Java语言的一个优点就是取消了指针的概念,但也导致了许多程序员在编程中常常忽略了对象与引用的区别,本文 ...
- C# Process.Start()方法详解(转)
C# Process.Start()方法详解 System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能: 1.打开某个链接网址(弹窗). 2.定位打开某 ...
- 解决C#程序只允许运行一个实例的几种方法详解
解决C#程序只允许运行一个实例的几种方法详解 本篇文章是对C#中程序只允许运行一个实例的几种方法进行了详细的分析介绍,需要的朋友参考下 本文和大家讲一下如何使用C#来创建系统中只能有该程序的一个实例运 ...
- telnet 命令使用方法详解,telnet命令怎么用
telnet 命令使用方法详解,telnet命令怎么用? 文章类型:电脑教程 原创:天诺时空 什么是Telnet? 对于Telnet的认识,不同的人持有不同的观点,可以把Telnet当成一种通信协 ...
- “全栈2019”Java多线程第三十章:尝试获取锁tryLock()方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
随机推荐
- 李洪强iOS开发之OC[003] - 用钥匙串存储信息模拟登陆
- 华为终端开放实验室Android Beta 4测试能力上线
7月26日,Android P Beta 4发布(即Android P DP5),此版本为开发者最后一个预览版本,也预示着Android P正式版即将与大家见面. 为保证开发者在正式版本来临前做 ...
- 解决Bootstrap 试用手机端 布满全屏
@media (max-width: 767px) { body{ margin: 0; padding: 0; } } @media (max-width: 970px) { body{ margi ...
- 面试题:谈谈你对hibernate的理解
说说这类问题一般要和一个东西比較.说说他们的长处和缺点,hibernate就和JDBC比較呗.你就说说JDBC的优缺点.然后说说hibernate的优缺点,最后对照得出hibernate更好. hib ...
- Linux下mongodb安装及数据导入导出教程
Linux下mongodb安装及数据导入导出教程 #查看linux发行版本 cat /etc/issue #查看linux内核版本号 uname -r 一.Linux下mongodb安装的一般步骤 1 ...
- iOS 集成阿里百川最新版(3.1.1.96) 实现淘宝授权登录以及调用淘宝客户端商品详情页
公司最近要做第三方登录,由于是做导购项目,必不可少的有淘宝的授权登录.本来就是一个授权登录,没什么大不了的.但淘宝的无线开放业务——阿里百川更新的最新版本3.1.1.96,开发文档不是不详细,是很 ...
- Jmeter BeanShell 引用变量报错jmeter.util.BeanShellInterpreter: Error invoking bsh method: eval Parse error at line 14, column 181 : Error or number too big for integer
如果你通过CSV Data Set Config或者_StringFromFile函数来参数化你的请求,需要特别注意当参数为纯数字时,jmeter会默认将其识别成int型数据,说明jmeter并不是默 ...
- PHP+MySQL:测试连接+基本DB操作
PHP使用MySQL,从连接.创建.到结果显示 <?php //连接MySQL测试 $db = mysql_connect("localhost","root&qu ...
- Linux常用命令及Vim使用
1.ls 命令 --------------------------------------------------------------------- ls以默认方式显示当前目录文件列表 ls - ...
- SonarQube 平台搭建
1. 前期准备 ① 环境 jdk 1.8 配置(见其他随笔) MySQL 5.7(见其他随笔) ② 工具下载 sonarqube 下载 <链接:https://pan.baidu.com/s/1 ...