请帮忙拆分一个字符串

人生无悔 2014-12-30 09:21:28
LPCTSTR printTxt="^FO150,50^A0,32,32^FDLight Engine^FS^FO150,100^A0,32,32^FDLight Engine^FS^FO150,150^A0,32,32^FDLight Engine^FS"

拆分的结果为(即每个^FS为一句):
^FO150,50^A0,32,32^FDLight Engine^FS
^FO150,100^A0,32,32^FDLight Engine^FS
^FO150,150^A0,32,32^FDLight Engine^FS

谢谢!
...全文
184 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
michael2988 2014-12-30

int  main(int argc, char* argv[])
{
    char s[] = "^FO150,50^A0,32,32^FDLight Engine^FS^FO150,100^A0,32,32^FDLight Engine^FS^FO150,150^A0,32,32^FDLight Engine^FS";
    char res[260];
    char *prev = s;
    char *cur = strstr(prev, "^FS");
    while (NULL != cur)
    {
        strncpy(res, prev, cur - prev);
        res[cur - prev] = '\0';
        strcat(res, "^FS");
        std::cout << res << std::endl;
        cur += 3;
        prev = cur;
        cur = strstr(prev, "^FS");
    }
    std::system("pause");
    return 0;
}
  • 打赏
  • 举报
回复
赵4老师 2014-12-30
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <tchar.h>
typedef const TCHAR *LPCTSTR;
LPCTSTR printTxt=_T("^FO150,50^A0,32,32^FDLight Engine^FS^FO150,100^A0,32,32^FDLight Engine^FS^FO150,150^A0,32,32^FDLight Engine^FS");
#define MAXSUBLEN 256 //每个子串的最大长度
#define MAXSUBSTR 100 //最多子串数
TCHAR s[MAXSUBSTR][MAXSUBLEN];
TCHAR *p,*p1;
int i,n,L;
int main() {
    i=0;
    p1=(TCHAR *)printTxt;
    while (1) {
        p=_tcsstr(p1,_T("^FS"));
        if (NULL==p) break;
        L=__min(MAXSUBLEN-1,p-p1+_tcslen(_T("^FS")));
        _tcsncpy(s[i],p1,L);s[i][L]=0;
        p1=p+_tcslen(_T("^FS"));
        i++;
        if (i>=MAXSUBSTR) break;
    }
    n=i;
    for (i=0;i<n;i++) {
        _tprintf(_T("%s\n"),s[i]);
    }
    return 0;
}
//^FO150,50^A0,32,32^FDLight Engine^FS
//^FO150,100^A0,32,32^FDLight Engine^FS
//^FO150,150^A0,32,32^FDLight Engine^FS
//
  • 打赏
  • 举报
回复
图灵狗 2014-12-30

#include <stdio.h>
#include <string.h>

int main(int argc, char* argv[])
{
    char str[] = "^FO150,50^A0,32,32^FDLight Engine^FS^FO150,100^A0,32,32^FDLight Engine^FS^FO150,150^A0,32,32^FDLight Engine^FS";
    char *p; 
    
    p = strtok(str, "S");
    while(p)
    {   
        printf("%sS\n", p);   
        p = strtok(NULL, "S");   
    }
    
    return 0;
}
  • 打赏
  • 举报
回复
人生无悔 2014-12-30
如果是单个符号分隔就知道怎么处理的,如下,不过要以^FS分隔我就不会了,谁可以帮我写下,多谢!



  • 打赏
  • 举报
回复
幻夢之葉 2014-12-30
引用 3 楼 zhangandli 的回复:
[quote=引用 2 楼 jacksonfan 的回复:] 查找子串^FO150,相邻2个就分割出来
只有^FS是固定的,不知怎么分,可否帮拆分下,谢谢![/quote] 1L
  • 打赏
  • 举报
回复
人生无悔 2014-12-30
引用 2 楼 jacksonfan 的回复:
查找子串^FO150,相邻2个就分割出来
只有^FS是固定的,不知怎么分,可否帮拆分下,谢谢!
  • 打赏
  • 举报
回复
jacksonfan 2014-12-30
查找子串^FO150,相邻2个就分割出来
  • 打赏
  • 举报
回复
羽飞 2014-12-30
施主,这个就是一个很普通的拆分字符串,可以用strstr查找分割的字符串,然后进行分割 http://www.cplusplus.com/reference/cstring/strstr/?kw=strstr
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.2w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
申请成为版主
帖子事件
创建了帖子
2014-12-30 09:21
社区公告
暂无公告