文章目录
- 1.介绍
- 2.分析
- 3.应用
1.介绍
函数原型:
简单来说就是从 s 处读取c语言字符串类型的数据源,再根据format对应的格式存储到附加参数所给出的位置当中去,效果是类似于scanf()的,但是这个的读入是直接以这个字符串作为输入源。如果成功,则回返回成功填充的项数,
2.分析
A. 不能使用string类型字符串作为数据源: 函数读取的数据源是c语言的字符串的数据源,也就是可以使用字符数组的初始地址或者就是”xxx“直接输入都可以
B. string可以通过c_str()函数转换为c语言数据源使用: c_str()函数返回一个指向正规C字符串的指针常量,内容与string串相同。这是为了与C语言兼容,在C语言中没有string类型,所以可以通过string类对象的成员函数c_str()把string对象转换成C中的字符串样式。
C. 格式存储的格式一定要和数据源的格式对应: 读入效果类似于scanf函数,如果格式不对应可能报错
D. 头文件: “iostream’ 或者 “cstdio”
3.应用
A. 常用于读取字符串当中的整型或者字符串信息
#includeusing namespace std;int main(){ int y, m, d; char s[] = "hello 2023/1/15", k[20]; int num = sscanf(s, "%s %d/%d/%d", k, &y, &m, &d); printf("成功填充的项数: %d\n", num); // 4 printf("%s %d/%d/%d", k, y, m, d); // hello 2023/1/15}
B. 与c++的string类型对象无法兼容,需要搭配c_str()函数使用转换为c语言字符串指针
如下图所示,如果直接使用string对象字符串会被显示无法转换为 c 语言当中的字符指针
借助c_str()函数(cstring库),将string类型字符串转为 const char *
#include#include // c_str()函数头文件using namespace std;int main(){ int y, m, d; char k[20]; string s = "hello 2023/1/15"; int num = sscanf(s.c_str(), "%s %d/%d/%d", k, &y, &m, &d); printf("成功填充的项数: %d\n", num); // 4 printf("%s %d/%d/%d", k, y, m, d); // hello 2023/1/15}