C++vector读取文本然后编辑再输出到文本?编辑要用到erase() insert()函数
1个回答
2013-07-24
展开全部
代码如下(insert / erase,使用这两个函数的地方都做了标记):
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 常量定义
const string IN_FILE = "d:\\in.txt";
const string OUT_FILE = "d:\\out.txt";
typedef vector<string> StrVector;
// 主函数
int main()
{
StrVector v;
// 写
fstream fin(IN_FILE.c_str());
if (!fin.is_open()) return -1;
for (int i = 1; i <= 10; ++i)
{
fin << "这是第" << i << "行" << endl; //将内容写入到文本文件中
}
// 读
fin.seekg(0, ios::beg); // 定位开始读取的位置
while (!fin.eof())
{
char buffer[1024] = {0};
fin.getline(buffer, sizeof(buffer));
v.insert(v.end(), buffer);
}
fin.close();
// 写
v.erase(v.begin()+5, v.end());
ofstream fout(OUT_FILE.c_str());
if (!fout.is_open()) return -1;
for (StrVector::const_iterator cit = v.begin(); cit != v.end(); ++cit)
{
fout << *cit << endl;
}
fout.close();
return 0;
}
// 测试结果:
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 常量定义
const string IN_FILE = "d:\\in.txt";
const string OUT_FILE = "d:\\out.txt";
typedef vector<string> StrVector;
// 主函数
int main()
{
StrVector v;
// 写
fstream fin(IN_FILE.c_str());
if (!fin.is_open()) return -1;
for (int i = 1; i <= 10; ++i)
{
fin << "这是第" << i << "行" << endl; //将内容写入到文本文件中
}
// 读
fin.seekg(0, ios::beg); // 定位开始读取的位置
while (!fin.eof())
{
char buffer[1024] = {0};
fin.getline(buffer, sizeof(buffer));
v.insert(v.end(), buffer);
}
fin.close();
// 写
v.erase(v.begin()+5, v.end());
ofstream fout(OUT_FILE.c_str());
if (!fout.is_open()) return -1;
for (StrVector::const_iterator cit = v.begin(); cit != v.end(); ++cit)
{
fout << *cit << endl;
}
fout.close();
return 0;
}
// 测试结果:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询