[問題] scanf替代品

作者: windows2k (程式宅 <囧>)   2016-07-22 07:30:54
問題(Question):
這問題我一直找不到適合的解法,想問問大家意見
C++11中,printf的替代品已經有[fmt](https://github.com/fmtlib/fmt)可以用了
不過scanf一直沒辦法
去StackOverflow找到推薦的解法大概長這樣
std::stringstream s("123 456 789");
int a, b, c;
s >> a >> b >> c;
這方法跟strtok差不多,不過遇到更困難的pattern
char str[] = "The value is 10, 3.3.";
int v;
double v1;
sscanf(str, "The value is %d, %lf", &v, &v1);
相對於stringstream,scanf的方式平易近人多了(雖然日後出包的機會也不少)
有更好得作法嘛?
作者: TobyH4cker (Toby (我要當好人))   2016-07-22 07:52:00
regex 0.0
作者: steve1012 (steve)   2016-07-22 08:06:00
Boost 好像有
作者: damody (天亮damody)   2016-07-22 08:45:00
pcre
作者: Ommm5566 (56天團)   2016-07-22 12:12:00
作者: Schottky (順風相送)   2016-07-22 23:30:00
文法稍複雜可以用 strtok() 或 strsep()文法超複雜可以用 yacc 或 bison
作者: windows2k (程式宅 <囧>)   2016-07-23 08:28:00
用regex, bison/yacc大概都有大砲打小鳥的感覺不過好像也沒更好的選擇了
作者: Caesar08 (Caesar)   2016-07-23 13:15:00
可是regex要自己把string轉成integer
作者: EdisonX (卡卡獸)   2016-07-24 01:38:00
sscanf 減少出包的機會就是善用傳回值。

Links booklink

Contact Us: admin [ a t ] ucptt.com