在C++中使用文本文件进行输入输出

PHPz
PHPz 原创
2023-08-22 14:49:49 1307浏览

在C++中使用文本文件进行输入输出

在C++中,文本文件的处理是非常重要的,因为大部分程序都需要和外部文件进行输入输出,如读取存储在磁盘上的数据文件或者将程序内部的数据存储到文件中。因此,本文将介绍如何在C++中使用文本文件进行输入输出。

一、文本文件的打开与关闭

在C++中,需要使用文件流类对象(fstream)进行文件的读写操作。在使用文件之前,需要先建立文件流对象,并将其与文件关联起来。文件流对象的构造函数可以接受文件名和打开方式作为参数。C++中常见的文件打开方式有以下三种:

  1. ios::in:只读方式打开文件。
  2. ios::out:只写方式打开文件。
  3. ios::app:追加方式打开文件。

下面是一个简单的例子,演示如何打开文件:

#include <fstream>
using namespace std;

int main()
{
    // 创建文件流对象并关联文件
    fstream file("example.txt", ios::in | ios::out);

    // 判断文件是否打开成功
    if (!file)
    {
        cout << "无法打开文件" << endl;
        return -1;
    }

    // 文件操作

    // 关闭文件
    file.close();
    return 0;
}

在上述代码中,通过fstream类的构造函数创建了一个名为file的文件流对象,并将其与文件example.txt关联起来。打开文件时,使用了一种既可读又可写的方式。换句话说,当需要对文件进行读操作时,需要使用ios::in选项;当需要对文件进行写操作时,需要使用ios::out选项;当需要在文件末尾添加内容时,需要使用ios::app选项。这里为了方便起见,使用了既可读又可写的方式。

在文件操作完成后,需要关闭文件。这可以通过文件流对象的close()函数来实现。

二、从文件中读取数据

在打开文本文件之后,我们可以使用文件输入流对象(ifstream)从文本文件中读取数据。C++提供了多种方法来读取文件中的数据,包括以下几种:

  1. getline()函数:从文件中读取一行文本数据。
  2. 运算符:从文件中读取一个单词或一个数值。
  3. read()函数:从文件中读取指定长度的数据。
  4. get()函数:从文件中读取一个字符。
  5. peek()函数:预读下一个字符,但不从文件中移除。
  6. ignore()函数:忽略文件中指定数量的字符。

下面是一个简单的例子,演示如何从文件中读取数据:

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    // 创建文件流对象并关联文件
    ifstream file("example.txt");

    // 判断文件是否打开成功
    if (!file)
    {
        cout << "无法打开文件" << endl;
        return -1;
    }

    // 读取文件内容
    string str;
    while (getline(file, str))
    {
        cout << str << endl;
    }

    // 关闭文件
    file.close();
    return 0;
}

在上述代码中,我们创建了一个名为file的输入文件流对象,并将其关联到文件example.txt。在while循环中,通过调用getline()函数逐行读取文件内容,并将每行数据存储在字符串变量str中。最后通过cout输出读取到的内容。

三、向文件中写入数据

在C++中,使用文件输出流对象(ofstream)可以向文本文件中写入数据。常用的写入函数包括以下几种:

  1. <<运算符:写入一个单词或数值。
  2. put()函数:写入一个字符。
  3. write()函数:写入指定长度的数据。

下面是一个简单的例子,演示如何向文件中写入数据:

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    // 创建文件流对象并关联文件
    ofstream file("example.txt");

    // 判断文件是否打开成功
    if (!file)
    {
        cout << "无法打开文件" << endl;
        return -1;
    }

    // 向文件中写入数据
    for (int i = 1; i <= 10; i++)
    {
        file << "This is line " << i << endl;
    }

    // 关闭文件
    file.close();
    return 0;
}

在上述代码中,我们创建了一个名为file的输出文件流对象,并将其关联到文件example.txt。在for循环中,通过<<运算符向文件中写入数据。每次循环写入一行文本数据,最后通过close()函数关闭文件。

四、文件指针

在进行文件操作时,需要使用指针来指示当前文件读写的位置。文件指针通常称为文件位置指示器,它由每个文件维护一个内部变量,用于记录从文件开始位置到当前位置的字节数。

C++提供了以下几个函数来操作文件指针:

  1. tellg()函数:获取文件读位置。
  2. tellp()函数:获取文件写位置。
  3. seekg()函数:设置文件读位置。
  4. seekp()函数:设置文件写位置。

下面是一个简单的例子,演示如何操作文件指针:

#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    // 创建文件流对象并关联文件
    fstream file("example.txt", ios::in | ios::out);

    // 判断文件是否打开成功
    if (!file)
    {
        cout << "无法打开文件" << endl;
        return -1;
    }

    // 获取、设置文件指针位置
    file.seekp(6); // 将文件写位置设置为6
    file.put('X'); // 在文件位置6处写入字符'X'

    file.seekg(0); // 将文件读位置设置为0
    char ch = file.get(); // 从文件位置0读取一个字符
    cout << "第一个字符是:" << ch << endl;

    // 关闭文件
    file.close();
    return 0;
}

在上述代码中,我们创建了一个名为file的文件流对象,并将其关联到文件example.txt。在操作文件指针之前,需要先打开文件。

在例子中,我们使用了seekp()函数将文件指针位置设置为6,随后使用put()函数在文件位置6处写入了字符'X'。接着,使用seekg()函数将文件指针位置设置为0,使用get()函数从文件位置0处读取一个字符,并将其输出。

五、总结

以上是使用C++进行文本文件的输入输出的基本操作。在进行文件操作时,需要注意打开和关闭文件的顺序,以及文件指针位置的操作。文本文件的读写操作、指针定位等操作都非常简单,但需要牢记常用的函数和操作方式。

以上就是在C++中使用文本文件进行输入输出的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。