📜  文件读取c++(1)

📅  最后修改于: 2023-12-03 15:10:23.662000             🧑  作者: Mango

文件读取 C++

在 C++ 编程中,我们经常需要读取文件内容并进行处理。本文将介绍如何在 C++ 中读取文件,以及如何将读取到的内容进行处理。

文件读取
打开文件

要读取文件,在程序中需要先打开文件。C++ 中可以使用 fstream 类来打开文件,并通过以下方式打开文件:

#include <fstream>
using namespace std;

int main() {
    string filename = "test.txt";
    fstream file(filename, ios::in);

    if (!file.is_open()) {
        cout << "Error opening file!" << endl;
        return 1;
    }

    return 0;
}

以上代码中,我们通过 fstream 类创建一个对象 file,并通过 ios::in 模式打开文件。需要注意的是,在打开文件时应该先判断文件是否成功打开,否则程序会崩溃。可以使用 is_open() 函数来判断文件是否成功打开。

读取文件内容

在文件打开成功后,我们可以通过以下方式读取文件内容:

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

int main() {
    string filename = "test.txt";
    fstream file(filename, ios::in);

    if (!file.is_open()) {
        cout << "Error opening file!" << endl;
        return 1;
    }

    string line;
    while (getline(file, line)) {
        cout << line << endl;
    }

    file.close();
    return 0;
}

以上代码中,我们使用 getline() 函数逐行读取文件内容,并输出到控制台上。需要注意的是,在读取文件内容后应该及时关闭文件,可以使用 close() 函数来关闭文件。

文件处理

除了简单地读取文件内容外,我们还可以对读取到的文件内容进行处理。下面是几个常用的文件处理操作。

拷贝文件

拷贝文件是一项常用的文件处理操作。可以通过以下代码实现:

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

int main() {
    string input_file = "input.txt";
    string output_file = "output.txt";

    fstream ifs(input_file, ios::in);
    fstream ofs(output_file, ios::out);

    if (!ifs.is_open()) {
        cout << "Error opening input file!" << endl;
        return 1;
    }

    if (!ofs.is_open()) {
        cout << "Error opening output file!" << endl;
        return 1;
    }

    string line;
    while (getline(ifs, line)) {
        ofs << line << endl;
    }

    ifs.close();
    ofs.close();

    return 0;
}

以上代码中,我们首先创建了两个对象 ifsofs,分别用于打开输入文件和输出文件。在循环中,我们通过 getline() 函数读取输入文件中的每一行,然后写入到输出文件中。

统计单词数量

统计单词数量是另一项常用的文件处理操作。可以通过以下代码实现:

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

int main() {
    string filename = "test.txt";
    fstream file(filename, ios::in);

    if (!file.is_open()) {
        cout << "Error opening file!" << endl;
        return 1;
    }

    unordered_map<string, int> word_count;
    string line, word;
    while (getline(file, line)) {
        istringstream iss(line);
        while (iss >> word) {
            ++word_count[word];
        }
    }

    file.close();

    for (const auto& pair : word_count) {
        cout << pair.first << " occurs " << pair.second << " times." << endl;
    }

    return 0;
}

以上代码中,我们首先使用 istringstream 类来读取字符串,并将每个单词加入到 unordered_map 类型的 word_count 中。最后遍历 word_count,输出每个单词及其出现次数。

总结

本文介绍了如何在 C++ 中读取文件,并介绍了一些常用的文件处理操作。希望通过本文的介绍,可以帮助大家更好地处理文件相关的任务。