如何用MFC删除TXT中多行数据

TXT文件如下您的订票信息:订单号:20111103013521出行日期:as......电话号:asd您的订票信息:订单号:20111103013522...电话号:a... TXT文件如下
您的订票信息:
订单号:20111103013521
出行日期: as
...
...
电话号: asd
您的订票信息:
订单号:20111103013522
...
电话号: asd
您的订票信息:
...
用订单号做索引,删除一个订票信息:我的代码只能删除一行订单号,不能删除多行~
这里只能贴一部分代码
CStdioFile file;
char* pFileName="订票信息.txt";
CString str;
CStringArray strarray;
CString strLine;
CString key="订单号:"+m_TicketNum;
int nCount=strarray.GetSize();
while(file.ReadString(strLine))
{
strarray.Add(strLine);
}
file.Close();
for(int i=0; i <nCount; i++)
{
str = strarray[i];
if( str.Find(key) != -1)
{
// strarray.RemoveAt(i-1);这里报错了
strarray.RemoveAt(i);
//strarray.RemoveAt(i+1);
...
nCount--;
i--;
}
}
展开
 我来答
忘至白葬不情必0T
2011-11-03 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:90%
帮助的人:1.2亿
展开全部
思路应该是用订单号作索引,来找到想删的数据,然后删除该订单号的前一行,以及之后的若干行。
但我没看到你按这个思路来啊,if( str.Find(key) != -1) ,这个Find的结果你又没用上,直接就RemoveAt(i-1),RemoveAt(i-1)了,你应该删除RemoveAt(str.Find(key)-1)吧。
追问
嗯,我就是按照那么想的,str.Find(key)是其中一行的数据 返回的是key在这行字符串的位置,我只需要判断一下这行是不是我要找的就可以了~删除的话用CStringArray,RemoveAt(i-1)这个不行啊,现在按LS那位仁兄实现了删除后几行及本行 但是删不了上面的。。。
追答
用Find找到要删的数据的订单号是第x行,每个订票信息是y行的话,那么从x+y-2行开始往前删到x-1行,不行么?
noodlest
2011-11-03 · TA获得超过785个赞
知道小有建树答主
回答量:724
采纳率:100%
帮助的人:717万
展开全部
i 如果为0的话,i-1就为-1了,RemoveAt(-1)肯定会报错的嘛!算法不严谨,改改算法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友87b4f1c69
推荐于2017-10-14 · TA获得超过1218个赞
知道小有建树答主
回答量:760
采纳率:0%
帮助的人:975万
展开全部
CStringArray删除过一个元素后,后面的元素自动前移一位的,所有如果要删除N行,需要从后面的开始删起,可通过下面方法
if(str.Find(key) != -1)
{
for(int j=N-1;j>0;j--)//N为需要删除的行数
{
strArray.RemoveAt(i+j);
}
break;//跳出循环
}
追问
这么改的
if(str.Find(key) != -1)
{

for(int j=6;j>0;j--)//N为需要删除的行数
{
if( (strarray.GetAt( i+j )) != "" )//判断是否空这么写好像不管用。。
strarray.RemoveAt(i+j);
}
strarray.RemoveAt(i);//这里是删本行貌似上面删不了
nCount--;
i--;

break;//跳出循环
}
大哥~要不然我给你发程序过去帮我看一下好吗真谢谢你
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ryw12403
2011-11-03 · TA获得超过1899个赞
知道大有可为答主
回答量:2501
采纳率:0%
帮助的人:2090万
展开全部
nCount--;
i--;

这里的i-- 不用了吧?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式