sscanf函数(C/C++)

文章目录

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. 常用于读取字符串当中的整型或者字符串信息

#include<iostream>
using 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 语言当中的字符指针
在这里插入图片描述

扫描二维码关注公众号,回复: 14727270 查看本文章

 借助c_str()函数(cstring库),将string类型字符串转为 const char *

#include<iostream>
#include<cstring> // 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
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_51566349/article/details/128682258