作者windows2k (程式宅 <囧>)
看板C_and_CPP
標題[問題] scanf替代品
時間Fri Jul 22 07:30:54 2016
問題(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的方式平易近人多了(雖然日後出包的機會也不少)
有更好得作法嘛?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.53.108
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1469143857.A.81B.html
→ TobyH4cker: regex 0.0 07/22 07:52
推 steve1012: Boost 好像有 07/22 08:06
推 damody: pcre 07/22 08:45
→ Schottky: 文法稍複雜可以用 strtok() 或 strsep() 07/22 23:30
→ Schottky: 文法超複雜可以用 yacc 或 bison 07/22 23:31
→ windows2k: 用regex, bison/yacc大概都有大砲打小鳥的感覺 07/23 08:28
→ windows2k: 不過好像也沒更好的選擇了 07/23 08:28
→ Caesar08: 可是regex要自己把string轉成integer 07/23 13:15
→ EdisonX: sscanf 減少出包的機會就是善用傳回值。 07/24 01:38