文章目录

    • 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}