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;
}