作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1469143857.A.81B.html
1F:→ TobyH4cker: regex 0.0 07/22 07:52
2F:推 steve1012: Boost 好像有 07/22 08:06
3F:推 damody: pcre 07/22 08:45
5F:→ Schottky: 文法稍复杂可以用 strtok() 或 strsep() 07/22 23:30
6F:→ Schottky: 文法超复杂可以用 yacc 或 bison 07/22 23:31
7F:→ windows2k: 用regex, bison/yacc大概都有大炮打小鸟的感觉 07/23 08:28
8F:→ windows2k: 不过好像也没更好的选择了 07/23 08:28
9F:→ Caesar08: 可是regex要自己把string转成integer 07/23 13:15
10F:→ EdisonX: sscanf 减少出包的机会就是善用传回值。 07/24 01:38