高手帮忙看看代码哪里有问题啊。。。

jax_lee 2011-08-11 03:04:47
//获取子字符串个数
int GetSubStrCount(CString &str,char cFlag)
{
cFlag = ',';
int i = 0;
BOOL isHas = FALSE;

for (int iStart = -1; -1 != (iStart = str.Find(cFlag,iStart+1)) ; i++)
{
isHas = TRUE;
}

if (!isHas)
{
return 0;
}
else
{
return i+1;
}
}

//获取子字符串
// i 序号 0
CString GetSubStr(CString &str,int i,char cFlag)
{
i = 0;
cFlag = ',';
int iStart = -1;
int iEnd = 0;
int j = 0;
int iStrCount;

iStrCount = GetSubStrCount(str,cFlag);

if (i>iStrCount -1 || i<0)
{
str = "";
return str;
}
else
{
//do nothing
}

if (i == iStrCount-1)
{
i = iStrCount;

for (;j<i-1;j++)
{
iStart = str.Find(cFlag , iStart+1);
}

return str.Mid(iStart+1 , str.GetLength()-iStart-1);
}
else
{
//do nothing
}

for (; j<i; j++)
{
iStart = str.Find(cFlag , iStart+1);
}

iEnd = str.Find(cFlag , iStart+1);
return str.Mid(iStart+1 , iEnd-iStart-1);
}


void CGpsDataView::OnFileRead()
{
// TODO: 在此添加命令处理程序代码
CStdioFile myFile;
CString oneLine;
int i = 0;
char cFlag = ',';
CString subStr[20];



if(!myFile.Open(_T("gps.txt"),CFile::modeRead | CFile::typeText))
{
AfxMessageBox(_T("打开文件错误!"));
return;
}
else
{
/*do nothing*/
}

while (myFile.ReadString(oneLine))
{
MessageBox(oneLine);
int j = GetSubStrCount(oneLine,cFlag);

for (j;j>0;j--)
{
subStr[j] = GetSubStr(oneLine,i,cFlag);

MessageBox(subStr[j]);
oneLine = oneLine.Right( strlen((LPSTR)(LPCTSTR)oneLine)
-strlen((LPSTR)(LPCTSTR)subStr[j]));
}
}

myFile.Close();
}

oneLine 的形式是:$GPGGA,010648.00,2307.594068,N,11321.993772,E,1,07,1.1,31.1,M,-5.2,M,,*48
我循环提取一段段 只能显示出$GPGGA 这一段,老出来这一个。。。。
为什么。。
...全文
68 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jax_lee 2011-08-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 jax_lee 的回复:]
//获取子字符串个数
int GetSubStrCount(CString &str,char cFlag)
{
cFlag = ',';
int i = 0;
BOOL isHas = FALSE;

for (int iStart = -1; -1 != (iStart = str.Find(cFlag,iStart+1)) ; i+……
[/Quote]





void CGpsDataView::OnFileRead()
{
// TODO: 在此添加命令处理程序代码
CStdioFile myFile;
CString oneLine;

char cFlag = ',';
CString subStr[20];



if(!myFile.Open(_T("gps.txt"),CFile::modeRead | CFile::typeText))
{
AfxMessageBox(_T("打开文件错误!"));
return;
}
else
{
/*do nothing*/
}

while (myFile.ReadString(oneLine))//读一行
{
MessageBox(oneLine);
int j = GetSubStrCount(oneLine,cFlag); //得到该行的子字符串个数
MessageBox(_T("校验中..."));

if(CheckNum(oneLine))
{
MessageBox(_T("数据接收正确!..."));
for (int i=0;i<j;i++)
{
subStr[i] = GetSubStr(oneLine,i,cFlag);
MessageBox(subStr[i]);
}
}
else
{
AfxMessageBox(_T("数据接收错误!..."));
}
}

myFile.Close();
}
已经解决了 。。我用的是VS2008 由于那个多字节和unicode的关系。。配置了一下就ok了
jax_lee 2011-08-11
  • 打赏
  • 举报
回复
那如何修改呢 [Quote=引用楼主 jax_lee 的回复:]
//获取子字符串个数
int GetSubStrCount(CString &str,char cFlag)
{
cFlag = ',';
int i = 0;
BOOL isHas = FALSE;

for (int iStart = -1; -1 != (iStart = str.Find(cFlag,iStart+1)) ; i+……
[/Quote]
至善者善之敌 2011-08-11
  • 打赏
  • 举报
回复
因为subStr[j] = GetSubStr(oneLine,i,cFlag);//这里i=0;永远不变化
一类资源描述:Java ASP系统毕业设计资源 1. 概述:该资源集中于Java与ASP结合的Web系统毕业设计。对于学生而言,它提供了从初步的构想到实际开发所需的全方位辅助材料,包括论文、设计文档和源代码等。 2. 包含内容: - 论文:涵盖了整个Java ASP Web系统的基础知识,设计意图、需求概述、系统结构与设计哲学、相关技术的深入探索等。学生可以从论文中理解项目的全局构想和关键设计决策。 - 设计文档:详细梳理了系统的构建过程,包含需求分析、系统框架设计、数据库规划、界面布局、功能模块划分等。此文档将引导学生逐步实现和调试系统。 - 源代码:提供Java与ASP整合的Web系统的完备代码,从前端界面代码(HTML、CSS、JavaScript)到后端的Java与ASP代码,再到数据库相关脚本。学生可以参考、修改或基于此代码进一步拓展。 - 辅助信息:包括其他与项目相关的技术文档、API手册、使用的第三方库的指导文档等,旨在帮助学生顺利解决技术上的难题。 3. 使用方法:建议学生首先浏览论文,了解系统的背景与设计目标。随后,依照设计文档进行具体的实现工作。当遇到技术问题时,可以查找辅助信息或参考源代码。源代码可以作为实现的起点或验证设计的有效性。 4. 注意事项:使用资源时,学生需确保遵守学校和课程的规定,防止直接复制粘贴,鼓励真正理解和原创。在借鉴源代码时,重要的是确保学生理解代码的逻辑和工作原理,而不仅仅是简单地复制。 希望这种资源描述能为您提供所需的信息。如有其他问题或需要更多的描述,请告诉我。

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧