typedef vector<vector<_line_info>> lineArr;
void CTestGuiDlg::OnBnClickedOk()
{
int _start = GetTickCount();
CFile _file;
_file.Open("C:\\test.txt",CFile::modeRead);
//文件长度;
int _len = _file.GetLength();
char* pdata = new char[_len+1];
char* presdata= new char[_len+1];
//读文件;
_file.Read(pdata,_len);
pdata[_len] = 0;
_file.Close();
lineArr _line_arr;
_line_arr.resize(100); //假设最多一行有10个'|'
int cnt = 0;
_line_info _info;
int _head_pos = 0;
for(int i = 0;i < _len;)
{
if(pdata[i] == '\r') //回车;
{
i += 2;
_info.pos = _head_pos; //这一行的起点;
_info.len = i - _head_pos; //这一行的长度;
_line_arr[cnt-1].push_back(_info);
_head_pos = i; //下一行起点;
cnt = 0; //'|'计数清0
continue;
}
else if(pdata[i] == '|')
++cnt;
++i;
}
/*
//这段是 57楼那位朋友的写入文件的程序
//写文件;
CFile _file2;
_file2.Open("C:\\test保存的结果.txt",CFile::modeWrite);
//遍历并且写文件;
for (lineArr::iterator it = _line_arr.begin();it != _line_arr.end();++it)
{
for (vector<_line_info>::iterator it2 = it->begin();it2 != it->end();++it2)
{
_file2.Write(pdata + it2->pos,it2->len);
}
}
*/
//下面这个是我修改的,一次性写入,速度快,不用频繁的写入。
char *ptem=presdata;
//遍历复制到结果缓存区;
for (lineArr::iterator it = _line_arr.begin();it != _line_arr.end();++it)
{
for (vector<_line_info>::iterator it2 = it->begin();it2 != it->end();++it2)
{
memcpy(ptem,pdata + it2->pos,it2->len);
ptem+=it2->len;
}
}
CFile _file2;
_file2.Open("C:\\test保存的结果.txt",CFile::modeCreate|CFile::modeWrite);
_file2.Write(presdata,_len+1);
_file2.Close();
delete[] pdata;
//消耗时间;
int _end = GetTickCount();
int _time = _end - _start;
char buf[16];
sprintf(buf,"消耗时间:%d 毫秒",_time);
MessageBox(buf);
}
等级:
SQLite 使用小结
数据库编程总结当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS ACCESS等等。数据库编程是对数据库的创建、...
非常详尽地介绍了VC中数据库编程的各种方法,大侠们长期经验的总结,不可多得的文章。
mysql 安装、sql语法 一条sql语句完成MySQL去重留一 mysql 事务、索引、锁、分区/分表、sql优化、查询优化 mysql 安装配置使用、sql语法 MySQL主键、创建索引、UNION 和 UNION ALL mysql 索引类型以及创建 ...
由于自己正在做一个高性能大用户量的论坛程序,对高性能高并发服务器架构比较感兴趣,于是在网上收集了不少这方面的资料和大家分享。... 初创网站与开源软件 6 ? 谈谈大型高负载网站服务器的优化心得!...
1 c++ c++ c++ c++ 笔试题汇总 ① 链表反转 单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是 这 样的: 1->2->3->4->5 通过反转后成为 5->4->3->2->1 。...
由于自己正在做一个高性能大用户量的论坛程序,对高性能高并发服务器架构比较感兴趣,于是在网上收集了不少这方面的资料和大家分享。希望能和大家交流 ... ——————————————————————————...
我出生在南方的一个农村。还记得小时候家里是很穷的,那时候上学也很便宜,我已记不清初中以前的学费是多少了。反正从小在家里玩泥巴,... 说是上学,其实就是在村里的一座小庙,庙里面似乎就剩个大菩萨。摆几张桌子椅
中国的法律都是.txt文件,不是.exe文件。 程序员:三年前,当我写下这个的时候,只有上帝和我能够看懂。 现在,只有 上帝能看懂了。 同事说,他在写i++的时候总觉的自己写的是 我艹.........有木有同感??...
编程修养 什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了...
C语言嵌入式系统编程修炼之一:背景篇不同于一般形式的软件编程,嵌入式系统编程建立在特定的硬件平台上,势必要求其编程语言具备较强的硬件直接操作能力。无疑,汇编语言具备这样的特质。但是,归因于汇编语言开发...
中国的法律都是.txt文件,不是.exe文件。 同事说,他在写i++的时候总觉的自己写的是 我艹.........有木有同感???? 程序员,年二十有二,始从文,连考而不中。 遂习武,练武场上发一矢,中鼓吏,逐之出。 改学...
Linux系统下.ko文件是什么文件?.so文件是什么文件... 5 我有一个文件abc.txt,我想用bunzip2压缩工具进行压缩!... 5 insmod(installmodule)5 记mount NFS遇到的一个问题(-o nolock)6 关于C语言结构体赋值...
有人认为后期的C++趋向学院派风格,走进了一味追求技术和难度的误区,逐渐脱离主流的Programmers. 有人认为C++由于复杂度导致在现代软件工程中的地盘不断缩水. 也有人认为,C++无任对特定领域应用还是研究来说,都足够...
from: http://blog.csdn.net/byxdaz/archive/2010/04/11/5473557.aspx当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, ...