许多地学信息数据通常是由采集工具自动生成的文本文档来保存,相邻数据间常以空格、逗号或制表符等隔开(如下图),通常一个文本文档保存的数据能达到好几MB,手工录入到数据处理软件或数据库中几乎是不可能的,可以采用这样一种思路来处理这种数据:将每行的数据读入并保存到字符串中,然后每行再按分隔符分割成若干数据分别保存在数组中,进而输出成其它类型的文档或保存到数据库中就方便多了。
最近在学习MFC,所以只介绍一下VC++中实现这种字符串分割的方法。其实只需要编写一个类似于php中的explode的函数即可,将需要处理的字符串、分隔符传入到函数中,然后将分割开的各项保存到一个字符串数组中即可。
如何从文本文档中读取数据不是本文主题,你可以自行搜索一下。分割字符串的函数可以这样写:
void SplitStr(CString input, CStringArray &output, char division)
//输入字符串为input,字符串数组output保存分割后结果,division为分割符
{
output.RemoveAll(); //清空数组
for(int i=0;i
灵活利用CString封装的一些方法可以让你省时省力,从这个函数中就可以很好的体现出来。使用该函数对字符串分割后可以用output.GetAt(i)的方式获得分割后的子串。
本文开始时的文本数据经过处理后显示在程序中是这样的:
基本上就这样了,Pavel还在努力学习MFC中,此文旨在和新手们分享一下学习所得,老鸟们还请多多指教~~



头大了··· ❓
c的啊,好高级~
@小松 @小松?哈哈,小松不懂问我啊
@林西老九 @林西老九?我有不懂的也问你 嘿嘿~~
@小松 @小松?你在内涵吧~~ ➡
这玩意用php的一个函数就能解决了
合伙淘来看过了 不错啊
哇~你出来的界面竟然不是黑框框的~~让我好惊讶啊~~ 🙄
@kaka @kaka?你说的是哪个界面?为什么要有黑框框呢?
@Pavel @Pavel?就是最简单的那个界面 ~~
Pavel写技术文了。 👿
@ZDAvril @ZDAvril? 😎 很很基础的技术
来学习学习
哈哈,看出来用了那个单机版的了~ 用VC就是简单,采集代理的时候都是需要自己一行一行的改很麻烦,后来就想出来每一行分离出前面多少要是两位数(或三位)等于前面的数+1就多一位 然后这么循环。。
➡ 不过你方法好像跟我差不多。。 对了你底下查询的数有点太多了,有时间优化一下,优化数据表 并且把没用的插件统统卸掉 🙂
@clyee @clyee? ❓ 我已经尽量少用插件了,呵呵,只能先这样了,最近也没机会研究优化,不能上网是件很让人头疼的事啊!说到采集代理,我也快学到vc网络编程那里了,貌似学点网络底层的东西就可以干点坏事了~~ 😆
@Pavel 我写那种程序都是.net写的,不过vc语句简洁点儿@Pavel?
两个循环
问题解决..
虽说对字符串操作就那么些函数,但还是经常搞得人很头疼。
@纯野 @纯野?恩 熟练了就好了~~
MFC……我怎么看起来像肯德基?
@学夫子 @学夫子?
哈哈 有意思啊
@学夫子 @学夫子? ❓ 你的想象力总是很丰富