当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 从文件中删除从开始的前几行该如何操作?
帖子发表于 : 2009-07-10 10:33 

注册: 2008-07-10 15:08
帖子: 448
送出感谢: 0 次
接收感谢: 0 次
???


页首
 用户资料  
 
2 楼 
 文章标题 : Re: 从文件中删除从开始的前几行该如何操作?
帖子发表于 : 2009-07-10 12:07 
头像

注册: 2006-06-19 19:19
帖子: 51
送出感谢: 0 次
接收感谢: 0 次
没有很直接的办法,下面的代码你看看
代码:
#include <iostream>
#include <fstream>
#include <list>
#include <ctime>
#include <vector>
using namespace std;

int main() {
    ifstream fin("testfile.txt");
    if (!fin) {
        cerr << "error" << endl;
        return 1;
    }

    string line;
    vector<string> lines;
    while (getline(fin, line)) {
        lines.push_back(line);
    }
    fin.close();

    ofstream fout("testfile.txt");
    if (!fout) {
        cerr << "error" << endl;
        return 1;
    }

    int skiplines = 5;
    if (lines.size() <= skiplines) {
        fout << "";
        fout.close();
        return 0;
    }

    for (size_t i = skiplines - 1; i < lines.size(); ++i) {
        fout << lines[i] << endl;
    }
    fout.close();
}


_________________
Tiger Cheng
昆山轩辕IT培训中心
C++培训讲师
邮件:kwarph@gmail.com
主页:http://www.xuanyuan-soft.cn


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 从文件中删除从开始的前几行该如何操作?
帖子发表于 : 2009-07-10 12:15 

注册: 2006-09-11 22:47
帖子: 2841
送出感谢: 0 次
接收感谢: 4
删除 file 文件前三行:

cat file |sed 1,3d


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 从文件中删除从开始的前几行该如何操作?
帖子发表于 : 2009-07-10 12:53 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
稍微修改了下2楼的代码

代码:
#include <iostream>
#include <fstream>
using namespace std;

int main() {
    int skiplines = 5;
    ifstream fin("testfile.txt");
    if (!fin) {
        cerr << "error" << endl;
        return 1;
    }
    ofstream fout("testfile.txt");
    if (!fout) {
        cerr << "error" << endl;
        return 1;
    }
    string line;
    int cur=0;
    while (getline(fin, line)) {
        if (cur++>=skiplines)
            fout << line<< endl;
    }
    fin.close();
    fout.close();
}


_________________
目前负债150多万


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 从文件中删除从开始的前几行该如何操作?
帖子发表于 : 2009-07-10 14:39 

注册: 2008-07-10 15:08
帖子: 448
送出感谢: 0 次
接收感谢: 0 次
谢谢
但是4楼的结果不对哈
是不是只是删除内容的
还得结合2楼的?


最后由 weihua2008 编辑于 2009-07-10 14:45,总共编辑了 1 次

页首
 用户资料  
 
6 楼 
 文章标题 : Re: 从文件中删除从开始的前几行该如何操作?
帖子发表于 : 2009-07-10 14:41 

注册: 2008-07-10 15:08
帖子: 448
送出感谢: 0 次
接收感谢: 0 次
shell命令就免了,这个我感觉不太适用嵌套到的c++程序中
是不是另有高见


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 从文件中删除从开始的前几行该如何操作?
帖子发表于 : 2009-07-10 14:49 
头像

注册: 2005-12-28 1:16
帖子: 3916
地址: 火星
系统: Ubuntu 12.10 X64
送出感谢: 1
接收感谢: 0 次
weihua2008 写道:
谢谢
但是4楼的结果不对哈
是不是只是删除内容的
还得结合2楼的?


搞反了,刚才那个是保留前5行


_________________
目前负债150多万


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 从文件中删除从开始的前几行该如何操作?
帖子发表于 : 2009-07-10 14:54 

注册: 2008-07-10 15:08
帖子: 448
送出感谢: 0 次
接收感谢: 0 次
还有一点疑问就是我的文件若是有几百M,或者更大,几个G的话这种方法还有效没有
容器还能承的下吗,是不是与我的内存的大小有关系,我的是两G 的内存
也就是操作的文件最大不能超过两G
这 只是一个极端的假设不要见怪


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 从文件中删除从开始的前几行该如何操作?
帖子发表于 : 2009-07-10 19:06 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
#include <iostream>
#include <fstream>
using namespace std;

int main() {
int skiplines = 5;
ifstream fin("testfile.txt");
if (!fin) {
cerr << "error" << endl;
return 1;
}
ofstream fout("testfile.txt");
if (!fout) {
cerr << "error" << endl;
return 1;
}
string line;
for (int i = 0;i < skiplines;++ i)
getline(fin, line);
while (getline(fin, line)) {
fout << line<< endl;
}
fin.close();
fout.close();
}


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译