【发布时间】:2015-11-07 14:23:12
【问题描述】:
我有一个字符串,其中包含来自文件的数据,这里是示例
string str = "File:./img/Char2.png\r\n
Size:128x128\r\n
Frames:2\r\n
Hand:79x54\r\n
Horizontal_Animated:0"
我希望使用这个字符串来初始化变量,但是遇到了一个问题:
我想使用sscanf(str.c_str(),"%*s Size:%dx%d",&Width,&Height)
解析这个字符串并且它可以工作,但是我不喜欢一件事:
对于第二个,第三个......sscanf 的调用我需要再添加一个%*s,因为这个东西不会忽略\r\n,所以下一个代码如下所示:
sscanf(contents.c_str(),"%*s %*s Frames:%d",&MaxFrames);
sscanf(contents.c_str(),"%*s %*s %*s Hand:%dx%d",&HandX,&HandY)
那么,我如何在没有大量 %*s 的情况下更改格式字符串以进行正确解析?
ps。我知道 C++11 中的正则表达式,但我对解决方案很好奇
【问题讨论】:
-
那么,我如何在没有大量 %*s 的情况下更改格式字符串才能正确解析? 简单:不要使用
sscanf。 C++11 有正则表达式。