none
字符串分割的问题 RRS feed

  • 问题

  • 有一个很长的字符串,例如:8=STEP.1.0.1<SOH>9=1632<SOH>35=UA3202<SOH>49=VDE<SOH>56=VDR<SOH>34=0<SOH>52=20110909-13:34:49<SOH>10142=。。。。。。。。。。。。。。。。。

    我现在要提取出<SOH>。。。<SOH>中间的数据,我用的代码是下面的,要么样改?

    LPCTSTR szToken = "<SOH>";
     int len = strlen("<SOH>");

    int start = totleData.Find(szToken);
     while(-1 != start)
     {
      int end = totleData.Find(szToken, start+len);
      if(-1 != end)
      {
       start += len;
       CString temp = totleData.Mid(start, end - start);
      }
     }


    xiao
    2011年9月9日 7:01

答案

  • 可以利用CString::Tokenize();以_T("<SOH>")来分割字符串
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 wh_xiao 2011年9月12日 23:55
    2011年9月9日 14:02
    版主
  • String::Split("<SOH>");
    • 已编辑 RLib 2011年9月12日 6:54
    • 已标记为答案 wh_xiao 2011年9月12日 23:55
    2011年9月12日 6:53

全部回复

  • 测试中发现int end = totleData.Find(szToken, start+len)出现多次相同的值,就是想不明白原因。


    xiao
    2011年9月9日 7:44
  • while(-1 != start)

    什么时候start等于-1?


    麻烦把正确答案设为解答。
    2011年9月9日 7:50
    版主
  • 可以利用CString::Tokenize();以_T("<SOH>")来分割字符串
    Visual C++ enthusiast, like network programming and driver development. At present is being engaged in the WinCE/Windows Mobile platform embedded development.
    • 已标记为答案 wh_xiao 2011年9月12日 23:55
    2011年9月9日 14:02
    版主
  • String::Split("<SOH>");
    • 已编辑 RLib 2011年9月12日 6:54
    • 已标记为答案 wh_xiao 2011年9月12日 23:55
    2011年9月12日 6:53