对一个文件每次读取一行:
while (m_read.GetPosition() < m_read.GetLength())
{
m_read.ReadString(string);
if (string == "")
{
break;
}
if(string.Find("Err") != -1)
{
m_tmpfile.SeekToEnd();
m_tmpfile.WriteString(string);
m_tmpfile.WriteString("\n");
}
}
m_read 和m_tmpfile都是CStdioFile对象,现在的问题是,我使用m_read.ReadString读取一行时遇到一个问题,比如我要读取下面的文件:
0710 183623.636 Err 1104914752 SendSmsService-4096 >> SmsMessage.cpp:2907 virtual int SMPP::CSmppMessage::processWaitRespTimeOut(SMPP::CSmsTimeOut*)() >> [0x00002aaab9f02c40]Wait submit resp time out,simulate SR and erase this message from wait resp map.
destDOID = DOID://00000001/00000001/0000003D/0000003D
requestID = 61560710 183646.979 Inf 1077573952 DetectService-22 >> no more records
0710 183754.297 Inf 1096493376 Container >> Set timer successfully. timerID=2360198336, userTimerID=85, interval=3000, times=1, moduleID=12, MHID=12.第一次读取能够读到SMPP::CSmppMessage::processWaitRespTimeOut(SMPP::CSmsTimeOut*)() >> [0x00002aaab9f02c40]Wait submit resp time out,simulate SR and erase this message from wait resp map.但是第二次以后的读取都只能读到"map.",程序陷入死循环了,请教下这个是啥原因啊?还有个问题:如果文件的最后一行存在空行,GetPosition返回的值永远会小于GetLength返回的值,程序也跳不出来,有没有哪个命令能够删除文件中的空行?或者能够解决这个问题的?谢谢啦!
while (m_read.GetPosition() < m_read.GetLength())
{
m_read.ReadString(string);
if (string == "")
{
break;
}
if(string.Find("Err") != -1)
{
m_tmpfile.SeekToEnd();
m_tmpfile.WriteString(string);
m_tmpfile.WriteString("\n");
}
}
m_read 和m_tmpfile都是CStdioFile对象,现在的问题是,我使用m_read.ReadString读取一行时遇到一个问题,比如我要读取下面的文件:
0710 183623.636 Err 1104914752 SendSmsService-4096 >> SmsMessage.cpp:2907 virtual int SMPP::CSmppMessage::processWaitRespTimeOut(SMPP::CSmsTimeOut*)() >> [0x00002aaab9f02c40]Wait submit resp time out,simulate SR and erase this message from wait resp map.
destDOID = DOID://00000001/00000001/0000003D/0000003D
requestID = 61560710 183646.979 Inf 1077573952 DetectService-22 >> no more records
0710 183754.297 Inf 1096493376 Container >> Set timer successfully. timerID=2360198336, userTimerID=85, interval=3000, times=1, moduleID=12, MHID=12.第一次读取能够读到SMPP::CSmppMessage::processWaitRespTimeOut(SMPP::CSmsTimeOut*)() >> [0x00002aaab9f02c40]Wait submit resp time out,simulate SR and erase this message from wait resp map.但是第二次以后的读取都只能读到"map.",程序陷入死循环了,请教下这个是啥原因啊?还有个问题:如果文件的最后一行存在空行,GetPosition返回的值永远会小于GetLength返回的值,程序也跳不出来,有没有哪个命令能够删除文件中的空行?或者能够解决这个问题的?谢谢啦!
解决方案 »
- wireshark有没有提供进行编程或者外部程序调用接口
- MFC 动态链接库
- CSDN各斑竹,差不多已经有一个月左右,网站导航栏始终打不开,请问是何原因?由此还影响到本人揭帖,导致信誉分被扣,我觉得这是你们的问
- 20分求《MFC经典问答》一书的光盘源代码!谢谢!EMAIL:[email protected]
- 高手来看!
- 十万火急,在线等待,关于DLL的调用问题
- 为什么VC7。O生成的的RELEASE的EXE为什么移植后还要提示找MFC70。DLL?VC6。0就正常呀?
- VC 中如何赋值给 VARIANT 类型变量
- visual studio.net正式发布了吗?
- 请问:opencv中的blobtrack中的前景检测中的第一种算法的大致思想?
- 用VC编写dcmtk出的问题
- 我在View类里面,调了一个plot类,进行时时画图?
while(m_read.ReadString(string))
{
if(string.Find("Err") != -1)
{
m_tmpfile.SeekToEnd();
m_tmpfile.WriteString(string);
m_tmpfile.WriteString("\n");
}
}
Return Value
A pointer to the buffer containing the text data. NULL if end-of-file was reached without reading any data; or if boolean, FALSE if end-of-file was reached without reading any data.空行他也包含了 “回车换行” 字符,并非正真意义上的空, 所以ReadString也返回TRUE,下面的string.Find会返回-1,不影响任何逻辑关系。 所以答案就是行。
您好,
由于您长时间不结贴,上一次答复已超一个月并且已有最佳答案,本人帮你结贴。
若是觉得答案不嘉,请放在本版的疑难杂症帖链接:
http://bbs.csdn.net/topics/390351579。
如果您有什么意见,请您联系我。