关于sscanf的妙用
sscanf在格式化处理字符串上面有很大的帮助
首先我们可以看一个问题:
“输入一个字符串表示时间,如"12:06",我们如何得到这里的12和06呢?
最直观的处理方式是 找到":"这个分界点pos,然后我们可以取begin()到,pos,以及pos到end()的位置,分别获取对应的值,但是如果我们这样想呢?
把这一个字符串当作我们需要输入的字符串,我们需要使用什么函数呢? scanf然后根据输入的格式得到("%d%d", &a, &b)这样子处理,这里我们了解到一个函数sscanf()
菜鸟教程:
C 库函数 int sscanf(const char *str, const char *format, ...) 从字符串读取格式化输入。
这里我们知道怎么使用就行,比如需要处理上面的时间,我们可以这样:
string s = "11:59";
int hour, minute;
sscanf(s.c_str(), "%d:%d", &hour, &minute);
printf("the hour is %d, and the minute is %d", hour, minute);
另外一个使用的例子:
如果我们需要得到一个复数的实部和虚部呢? 输入(a + bi)我们同样可以这样处理
string s = "11+20i";
int r, v;
sscanf(s.c_str(), "%d+%di", &r, &v);
需要注意的一点是,由于我们使用的是格式化输入,因此对于字符串的输入要求需要是格式化的,比如上面的输入的时间是11:59中间并没有其他的空格之类,那么在处理的时候也不能加空格,否则就不能读入正确的数字。

浙公网安备 33010602011771号