21xrx.com
2024-12-22 20:42:49 Sunday
登录
文章检索 我的文章 写文章
C++11中的文件操作
2023-07-14 00:15:51 深夜i     --     --
C++11 文件操作 读取文件 写入文件 文件流

C++11是C++编程语言的一个版本,它提供了许多有用的新功能,例如自动类型推断、Lambda表达式、并发编程等。其中,文件操作也被加强了,本文将对C++11中的文件操作进行详细的介绍。

一、文件读写模式

在C++中,文件读写模式有两种:文本模式和二进制模式。文本模式以文本方式打开文件,可以读写普通的文本文件,而二进制模式则以二进制方式打开文件,可以读写任意类型的文件,包括音频、视频、图像等。

例如,以文本模式打开一个文件:


fstream file;

file.open("test.txt", ios::in);

以二进制模式打开一个文件:


fstream file;

file.open("test.bin", ios::binary | ios::in);

二、文件读写位置

在C++中,文件的读写位置由文件指针控制。文件指针可以通过seekg()和seekp()函数进行设置。

例如,将文件指针设置到文件末尾进行写入操作:


fstream file;

file.open("test.txt", ios::out | ios::app); //以追加模式打开文件

file.seekp(0, ios::end); //将文件指针定位到文件末尾

file << "hello world" << endl; //写入数据

将文件指针设置到文件开头进行读取操作:


fstream file;

file.open("test.txt", ios::in);

file.seekg(0, ios::beg); //将文件指针定位到文件开头

string data;

getline(file, data); //读取数据

三、文件流状态

在进行文件读写操作时,我们需要知道文件流的状态。C++提供了stream类的成员函数来查询文件流的状态。

常用的文件流状态有以下几种:

- eof():判断文件是否读取到末尾

- fail():判断I/O操作是否失败

- bad():判断文件流是否出错

- good():判断文件流是否正常

例如,在读取文件时判断文件结束:


fstream file;

file.open("test.txt", ios::in);

while (!file.eof()) { //判断是否读取到文件末尾

  string data;

  getline(file, data);

  cout << data << endl;

}

四、示例代码

下面是一个使用C++11进行文件操作的示例代码。


#include <iostream>

#include <fstream>

#include <string>

using namespace std;

int main() {

  //写入数据

  fstream file;

  file.open("test.txt", ios::out | ios::app);

  file.seekp(0, ios::end);

  file << "hello world\n";

  file.close();

  //读取数据

  file.open("test.txt", ios::in);

  if (!file)

    cerr << "Failed to open test.txt" << endl;

    return -1;

  

  string data;

  while (getline(file, data))

    cout << data << endl;

  

  file.close();

  return 0;

}

五、总结

C++11提供了许多有用的新功能,包括文件操作等。在进行文件操作时,我们需要选择不同的文件读写模式,并使用文件指针进行位置控制。同时,我们还需要注意文件流的状态,以便更好地进行文件读写操作。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复