本文介绍: 描述: 打开文件。定义:参数: filename– 要打开的文件路径 mode – 文件访问模式返回值: 无。可以通过is_open()函数判断文件是否打开成功。描述: 设置流文件 stream 位置标识符的位置。定义:参数: off– 偏移量。整数表示正向偏移,负数表示负向偏移。 dir – 设定从文件的哪里开始偏移,可能取值为:ios_base::beg、 ios_base::cur或 ios_b
1、ifstream::open、ofstream::open
定义:
void open ( const char * filename, ios_base::openmode mode = ios_base::in );
void open ( const char * filename, ios_base::openmode mode = ios_base::out );
参数:
filename– 要打开的文件路径
mode – 文件访问模式
文件访问模式常量 | 含义 | 解释 |
---|---|---|
ios::in | input | 为输入(读)而打开文件,文件不存在则创建(ifstream默认的打开方式) |
ios::out | output | 为输出(写)而打开文件,文件不存在则创建,若文件已存在则清空原内容(ofstream默认的打开方式) |
ios::ate | at end | 文件打开时,指针在文件最后。可改变指针的位置,常和in、out联合使用 |
ios::app | append | 供写使用,文件不存在则创建,若文件已存在则在原文件内容后写入新的内容,指针位置总在最后 |
ios::trunc | truncate | 丢弃打开前文件存在的内容(默认) |
ios::nocreate | 文件不存在时产生错误,常和in或app联合使用 | |
ios::noreplace | 文件存在时产生错误,常和out联合使用 | |
ios::binary | 二进制格式文件 |
返回值:
无。可以通过is_open()函数判断文件是否打开成功。
2、istream::seekg、ostream::seekp
定义:
istream& seekg ( streampos pos );
istream& seekg ( streamoff off, ios_base::seekdir dir );
ostream& seekp ( streampos pos );
ostream& seekp ( streamoff off, ios_base::seekdir dir );
参数:
off– 偏移量。整数表示正向偏移,负数表示负向偏移。
dir – 设定从文件的哪里开始偏移,可能取值为:ios_base::beg、 ios_base::cur或 ios_base::end
常量 | 描述 |
---|---|
ios_base::beg | 文件的开头 |
ios_base::cur | 文件指针的当前位置 |
ios_base::end | 文件的末尾 |
3、istream::tellg、ostream::tellp
定义:
streampos tellg ( );
streampos tellp ( );
参数:
无
返回值:
返回位置标识符的当前值。如果发生错误,则返回 -1。
4、istream::read
istream& read ( char* s, streamsize n );
参数:
s – 指向要读取的数组首地址
n– 要读取的字节大小
5、istream::gcount
streamsize gcount ( ) const;
参数:
无
6、ostream::write
ostream& write ( const char* s , streamsize n );
参数:
s – 指向数组中要被写入的首个对象的指针
n – 要被写入的字节数
返回值:
返回此对象。
7、ifstream::close、ofstream::close
描述:
关闭文件。
void close ( );
参数:
无
返回值:
无
8、示例:读取文件数据
#include <iostream>
#include <fstream>
int main(int argc, char **argv)
{
//1、打开文件
std::ifstream file;
file.open("E:\01-work\temp\微信图片.jpg", std::ios::in | std::ios::binary);
if (!file.is_open())
{
std::cout << "打开文件失败" << std::endl;
return -1;
}
//2、获取文件大小
file.seekg(0, std::ios::end); //设置文件末尾位置
int nFileSize = file.tellg(); //得到文件长度
file.seekg(0, std::ios::beg); //设置文件起始位置
char* pBuf = new char[nFileSize];
memset(pBuf,0,nFileSize);
//3、读取文件数据
file.read(pBuf, nFileSize);
if (file.gcount() < nFileSize)
{
file.close();
delete pBuf;
std::cout << "读取文件失败" << std::endl;
return -1;
}
//4、关闭文件
file.close();
delete pBuf;
std::cout << "读取文件成功" << std::endl;
return 0;
}
9、示例:写入文件数据
#include <iostream>
#include <fstream>
int main(int argc, char **argv)
{
int nFileSize = 1024; //文件大小
char* pBuf = new char[nFileSize];
memset(pBuf, 1, nFileSize);
//1、打开文件
std::ofstream file;
file.open("E:\01-work\temp\test.txt", std::ios::out | std::ios::binary);
if (!file.is_open())
{
std::cout << "打开文件失败" << std::endl;
return -1;
}
//2、写入文件数据
file.write(pBuf,nFileSize);
if (file.tellp() < nFileSize)
{
file.close();
delete pBuf;
std::cout << "写入文件失败" << std::endl;
return -1;
}
//3、关闭文件
file.close();
delete pBuf;
std::cout << "写入文件成功" << std::endl;
return 0;
}
原文地址:https://blog.csdn.net/phd17621680432/article/details/125321679
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_38672.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。