首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

各路神仙,给小弟我指点一二吧,C++字符串处理有关问题

2012-08-07 
各路神仙,给我指点一二吧,C++字符串处理问题有这样一个字符串:20120702172341.0ZHeChi1_MX3-1 Abis TP 58

各路神仙,给我指点一二吧,C++字符串处理问题
有这样一个字符串:
20120702172341.0Z;HeChi1_MX3-1 Abis TP 58[_1-3,6,1];minor (3);communicationsAlarm;M3100-farEndReceiverFailure;BSC-TRANS [101] RAI [5],181454;();();((Alcatel Additional Information,significant, Additional Information is ),(Alcatel Additional Information,significant,-- OMC3 ALARM --),(urlAddressOnAlarmDictionary,significant,https://gxsesn045:7443helpd/cgi-bin/alarm_search.cgi?specific_problem=181454,101005));1;unAcknowledged (0);cleared (1);20120702172341.2Z;;1.3.12.2.1006.53.1.2.0.3.1014;0.0.13.3100.0.7.68#14/0.0.13.3100.0.7.20#1/0.0.13.3100.0.7.48#58;1;

现在需要用分号把Chi1_MX3-1 Abis TP 58[_1-3,6,1];给匹配出来。请哪位帮我写一个完整的程序出来,要求程序不能出现任何空指针等一系列任何异常,非常非常感谢

[解决办法]
这叫神马需求, 第一个分号和第二个分号之间不就是嘛.
[解决办法]
代码参考:

C/C++ code
#include <iostream>#include <string>using namespace std;void main(){    string str = "20120702172341.0Z;HeChi1_MX3-1 Abis TP 58[_1-3,6,1];minor (3);"                 "communicationsAlarm;M3100-farEndReceiverFailure;BSC-TRANS [101] "                 "RAI [5],181454;();();((Alcatel Additional Information,significant, "                 "Additional Information is ),(Alcatel Additional Information,"                 "significant,-- OMC3 ALARM --),(urlAddressOnAlarmDictionary,"                 "significant,https://gxsesn045:7443helpd/cgi-bin/alarm_searc"                 "h.cgi?specific_problem=181454,101005));1;unAcknowledged (0)"                 ";cleared (1);20120702172341.2Z;;1.3.12.2.1006.53.1.2.0.3.101"                 "4;0.0.13.3100.0.7.68#14/0.0.13.3100.0.7.20#1/0.0.13.3100.0.7.48#58;1;";    size_t pos = str.find_first_of(";");    str = str.substr(pos + 1);    pos = str.find_first_of(";");    str = str.substr(0, pos);    cout << str << endl;}
[解决办法]
C/C++ code
[User:root Time:00:00:17 Path:/home/liangdong/c]$ ./output HeChi1_MX3-1 Abis TP 58[_1-3,6,1][User:root Time:00:00:18 Path:/home/liangdong/c]$ cat src/main.c #include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, char* const argv[]) {        const char *str = "20120702172341.0Z;HeChi1_MX3-1 Abis TP 58[_1-3,6,1];minor (3);communicationsAlarm;M3100-farEndReceiverFailure;BSC-TRANS [101] RAI [5],181454;();();((Alcatel Additional Information,significant, Additional Information is ),(Alcatel Additional Information,significant,-- OMC3 ALARM --),(urlAddressOnAlarmDictionary,significant,https://gxsesn045:7443helpd/cgi-bin/alarm_search.cgi?specific_problem=181454,101005));1;unAcknowledged (0);cleared (1);20120702172341.2Z;;1.3.12.2.1006.53.1.2.0.3.1014;0.0.13.3100.0.7.68#14/0.0.13.3100.0.7.20#1/0.0.13.3100.0.7.48#58;1;";        int i;        const char* ndx[3] = {str};        for (i = 1; i != 3; ++ i) {                if (ndx[i - 1]) {                        ndx[i] = strchr(ndx[i - 1] + 1, ';');                } else {                        ndx[i] = NULL;                }        }        if (ndx[1]) {                if (ndx[2]) {                        printf("%.*s\n", ndx[2] - ndx[1] - 1, ndx[1] + 1);                } else {                        printf("%s\n", ndx[1] + 1);                }        } else {                printf("non match\n");        }        return 0;}
[解决办法]
C/C++ code
[User:root Time:00:04:45 Path:/home/liangdong/c]$ ./output HeChi1_MX3-1 Abis TP 58[_1-3,6,1][User:root Time:00:04:46 Path:/home/liangdong/c]$ cat src/main.c #include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, char* const argv[]) {        const char *str = "20120702172341.0Z;HeChi1_MX3-1 Abis TP 58[_1-3,6,1];minor (3);communicationsAlarm;M3100-farEndReceiverFailure;BSC-TRANS [101] RAI [5],181454;();();((Alcatel Additional Information,significant, Additional Information is ),(Alcatel Additional Information,significant,-- OMC3 ALARM --),(urlAddressOnAlarmDictionary,significant,https://gxsesn045:7443helpd/cgi-bin/alarm_search.cgi?specific_problem=181454,101005));1;unAcknowledged (0);cleared (1);20120702172341.2Z;;1.3.12.2.1006.53.1.2.0.3.1014;0.0.13.3100.0.7.68#14/0.0.13.3100.0.7.20#1/0.0.13.3100.0.7.48#58;1;";        char *dup = strdup(str);        char *dup2 = dup;        char *token;        if ((token = strsep(&dup2, ";")) != NULL) {                token = strsep(&dup2, ";");                if (token != NULL) {                        printf("%s\n", token);                }        }        free(dup);        return 0;} 


[解决办法]

C/C++ code
    char *src_buf = "20120702172341.0Z;HeChi1_MX3-1 Abis TP 58[_1-3,6,1];minor (3);communicationsAlarm;M3100-farEndReceiverFailure;BSC-TRANS [101] RAI [5],181454;();();((Alcatel Additional Information,significant, Additional Information is ),(Alcatel Additional Information,significant,-- OMC3 ALARM --),(urlAddressOnAlarmDictionary,significant,https://gxsesn045:7443helpd/cgi-bin/alarm_search.cgi?specific_problem=181454,101005));1;unAcknowledged (0);cleared (1);20120702172341.2Z;;1.3.12.2.1006.53.1.2.0.3.1014;0.0.13.3100.0.7.68#14/0.0.13.3100.0.7.20#1/0.0.13.3100.0.7.48#58;1;";    char match_buf[100] = {0};    sscanf(src_buf,"%*[^;];%[^;]",match_buf);
[解决办法]
探讨

各位大神,麻烦按照string给我写一个好吗?char转string我怕出问题。小弟感激不尽

热点排行