C++ 读写txt文件类

C++ 读写txt文件类

封装一个C++简单的类,用于读写txt文件。

代码如下:

comFile.h

#pragma once
#include <iostream>
#include <fstream>
#include <string>
#include <vector>

using namespace std;

#define W  1        //write only
#define ADD 2       //addition write

class comFile
{
public:
    comFile();
    ~comFile();

    void write_txt(vector<string> info, string out_file, int Mode = 1);
    void read_txt(vector<string>& info, string in_file);
};

comFile.cpp

#include "comFile.h"


comFile::comFile()
{
}


comFile::~comFile()
{
}

void comFile::write_txt(vector<string> info, string out_file, int Mode)
{
    int num = info.size();

    if (num <= 0)
    {
        cout << "write information is empty!!!please check input " << endl;
        return;
    }

    ofstream outfile;

    switch (Mode)
    {
    case 1:outfile.open(out_file.c_str());
        break;
    case 2:outfile.open(out_file.c_str(), ios::app);
        break;
    default:outfile.open(out_file.c_str());
        break;
    }

    if (!outfile.is_open())
    {
        cout << "open file :" << out_file << "has failed!!!!" << endl;
        return;
    }

    for (size_t i = 0; i < num; i++)
    {
        outfile << info[i] << "\r";
    }

    outfile.close();
    return;
}

void comFile::read_txt(vector<string>& info, string in_file)
{
    //char buf[1024];

    ifstream file(in_file.c_str());

    if (!file.is_open())
    {
        cout << "open file :" << in_file << "has failed!!" << endl;
        return;
    }

    for (int i = 0; file.good() && !file.eof(); i++)
    {
        //memset(buf, 0, 1024);
        //file.getline(buf, 1024);      //读取的内容包含换行符
        //string message(buf);

        string message;
        file >> message;                //读取的内容不包含换行符

        cout << "comFile::read_txt--line :" << message << endl;
        info.push_back(message);
    }

    file.close();
    return;
}

main.cpp

#include "comFile.h"
#include <iostream>
#include<string>
#include<vector>

using namespace std;

int main()
{
    comFile a;

    vector<string> information;

    char num[512];
    string  prefix = "前缀", after = "后缀";
    string fileName = "E:\\name.txt";

    for (int i = 0; i < 10; i++)
    {
        _itoa_s(i, num, 10);
        string order(num);
        string text = prefix + order + after + "\n";

        information.push_back(text);
    }

    a.write_txt(information, fileName);
    cout << "write done!!" << endl;

    vector<string> reread;
    a.read_txt(reread, fileName);
    cout << "read done!!" << endl;

    return 0;
}


运行结果:

这里写图片描述

猜你喜欢

转载自blog.csdn.net/MissXy_/article/details/81749288