最近在寫C++的 一個比賽,要求只能用標準庫,tr命名空間也不能用;其中一項功能是sql語句的處理

看這個例子:

輸入

update TBNAME set (C, s,ss) = (sds,  sds, ds) where COL == value;

首先你不知道括號里有幾個參數,最要命的是逗號之間是允許空格的;最最要命的是c++標準庫里木有正則表達式支持。

想到sscanf可以簡單處理字符串,就想來試試。開始是這樣寫的:

 

抓不出來啊有木有!!sscanf天生殘疾的有木有!!看到空格就自動分割了有木有!!

最後還是在stackoverflow上看着看着找到了靈感:http://stackoverflow.com/questions/2854488/reading-a-string-with-spaces-with-sscanf

由於我不用換行,所以去掉了\n,所以最後就成了這個樣子,關鍵是[^\t]:

雖然在g++中會出現warning:unknown conversion type character ‘(‘ in format [-Wformat]

但是程序員不怕warning只怕error所以沒關係~

或者可以改得更完善(注意:sscanf處理大數據執行效率可能較低,所以應就簡):

 

尼瑪一股幸福感油然而生有木有!!

【最後淡淡地鄙視國內大多數博客不經過大腦複製粘貼的行徑,太浪費我時間了