C語言parser字串 |
答題得分者是:ubong
|
asd98537
一般會員 發表:27 回覆:25 積分:10 註冊:2002-10-23 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言:如果你的字串有固定的 rules 的話 就自己寫一個 function 去 parse 吧 「好」與「不好」並沒有一定的標準 只要能夠解決問題 而且不會衍生出另外問題的方法 都是「適合」的方法請問: 若有一字串如下 [gu sp="tbw1000" ] [su v="喜怒無常" y="xi nu wu chang" /] [/gu] 要怎麼把引號內的字串:tbw1000、喜怒無常、xi nu wu chang擷取出來 用sscanf嗎?那format參數怎麼下? 還是有比較好的方法? 謝謝
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
lcsboy
版主 發表:87 回覆:622 積分:394 註冊:2002-06-18 發送簡訊給我 |
|
asd98537
一般會員 發表:27 回覆:25 積分:10 註冊:2002-10-23 發送簡訊給我 |
心得
用sscanf 要求字串沒有空格, "xi nu wu chang" 就只能得到xi format為"[gu sp=%s ] [su v=%s y=%s /] [/gu]".結論如樓上兩位前輩所說,依照自已的需求來parser,並沒有立即直覺的方式 #include "iostream.h" #include "string.h" int main() { char str[] = "[gu sp=\"tbw1000\" ] [su v=\"喜怒無常\" y=\"xi nu wu chang\" /] [/gu]" char ch = '\"'; char *prev; char *next; char tmp[256]; prev = strchr(str, ch); next = strchr(prev 1, ch); strncpy(tmp, prev 1, next - prev -1); tmp[next - prev -1] = '\0'; cout << tmp << endl; return 0; }取得第一個“tbw1000”,其餘類推 |
ubong
一般會員 發表:2 回覆:42 積分:23 註冊:2002-10-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |