先來說下需求:從一個(gè)長字符串中 ,分別取出各個(gè)短字符串(以逗號(hào)或空格[多個(gè)]區(qū)分)
如:char achStrTemp[100] = " hello , World,? 1234dps? ?, 100? ?";
要分別取出? hello? ?World? ?1234dps? ?100? ?且各個(gè)字符串不包含空格或逗號(hào)
C庫函數(shù):?int sscanf(const char *str, const char *format, ...)? ? 默認(rèn)的截取規(guī)則是以空格為分割點(diǎn)? ? ?可允許使用正則規(guī)則
測試用例如下:
字符串
截取格式
輸出格式赁酝,逗號(hào)為了顯示字符串后的空格
運(yùn)行結(jié)果
注釋:%*? 表示跳過 [ ] 內(nèi)的非匹配項(xiàng)的值象浑,即不取數(shù)值字母以外的值, ^ 表示匹配項(xiàng)句携,可多個(gè)數(shù)值榔幸。()內(nèi)可填多個(gè)匹配項(xiàng)
遇到的問題來了,如果字符串的中間有空格且逗號(hào)前還有空格? 如: Wor? ld? ?,? 獲取的就有問題了
但是這個(gè)是特例了,不在有法可循的字符串內(nèi)削咆,截取的字符串必須要有特定的規(guī)則可循牍疏,否則只能在截取后再進(jìn)行處理
基礎(chǔ)的先了解下什么是正則表達(dá)式....正則基礎(chǔ)教程