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

 借助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
}

在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

psudd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值