stscanf s sscanf 正規表示式

2022-08-28 15:57:15 字數 983 閱讀 8732

]type  |  ' ' |  '\t' | '\n' | 非%符號},

注:表示a,b,c中選一,[d],表示可以有d也可以沒有d。

width:寬度,一般可以忽略,用法如:

const  char sourcestr = "hello, world";

char buf[10] = ;

sscanf(sourcestr, "%5s", buf);   //%5s,只取5個字元

cout << buf<< endl;

結果為:hello

:引數的size,通常h表示單位元組size,i表示2位元組 size,l表示4位元組size(double例外),l64表示8位元組size。

type :這就很多了,就是%s,%d之類。

特別的:

%*[width] type  表示滿足該條件的被過濾掉,不會向目標引數中寫入值。如:

const  char sourcestr = "hello, world";

char buf[10] = ;

sscanf(sourcestr, "%*s%s", buf);   //%*s表示第乙個匹配到的%s被過濾掉,即hello被過濾了

cout << buf<< endl;

結果為:world

支援集合操作:

%[a-z]  表示匹配a到z中任意字元,貪婪性(盡可能多的匹配)

%[ab']  匹配a、b、'中一員,貪婪性

%[^a]    匹配非a的任意字元,貪婪性

%*c表示忽略連續多個字元

%[^ ] 取遇到空格為止字串

%[^a-z] 取遇到大寫字母為止的字串

%[1-9a-z] 取僅包含1到9和小寫字母的字串

看看周星星同學的例子

const char* s = "iios/12ddwdff@122";

sscanf( s, "%*[^/]/%[^@]", buf );

結果為:12ddwdff

正宇,永遠的正宇

正宇,永遠的正宇 你是我今生的緣分和福報 當我走進正宇的隊伍中 我感到一種無比的榮耀和自豪 當我閱讀正宇公司的歷程時 我感到前所未有的震撼和驕傲 當我唱響正宇之歌的雄壯激昂 我禁不住熱血沸騰渾身充滿力量 當我仰望正宇標誌的簡練莊重 我看見嶄新的圖騰閃爍熠熠光芒 正宇,永遠的正宇 你是我今生的幸運和熱...

聚焦正能量

最近感覺狀態不是很好,已經有一段時間了,一直沒有想明白怎麼回事。症狀就是愛挑毛病 愛發火,事後總後悔。這兩天一直在反思,或許是因為最近老是關注一些負面的東西,比如常看新聞 說實話好新聞真的太少 反思做的不好的地方 比如現在 不是推卸責任,也許我本人也是受害者,因為按照傳統教育,日必三省吾身,不斷追求...

青春正能量

你做老闆,你做生意,你開店,你做夜場,你開工廠,你做服務業,等等,不管你做那一行,看完這篇文章,理解透了,就等於你清華大學畢業了。文章很長慢慢讀 人成熟與不成熟跟年齡沒有關係。人成熟不成熟,就是你能不能站在對方的角度去看待事物,就是能不能把我的世界變成你的世界。這個社會有很多的成年人,還沒有脫離幼稚...