| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1204 人关注过本帖
标题:在sscanf中使用正则运算,可以使用char型数组得到的数据,但不能使用int型或 ...
只看楼主 加入收藏
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
结帖率:93.75%
收藏
已结贴  问题点数:20 回复次数:4 
在sscanf中使用正则运算,可以使用char型数组得到的数据,但不能使用int型或者string型的到数据
程序代码:
#include<iostream>

using namespace std;

int main()
{
    string sum;
    int num;
    char str[50]={0};
    char buf[] ="There are 008 records in all:";
    sscanf(buf,"%*[^0-9]%[^ ]",str);
    //sscanf(buf,"%*[^0-9]%[^ ]",sum);
    //sscanf(buf,"%*[^0-9]%[^ ]",&num);

    cout<<"1."<<str<<"\n";
    cout<<"2."<<sum<<"\n";
    cout<<"3."<<num<<endl;

    return 0;
}


在sscanf中使用正则运算,可以使用char型数组得到的数据,但不能使用int型或者string型的到数据?
搜索更多相关主题的帖子: char string 数据 数组 int 
2020-02-17 15:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:20 
sscanf 不支持 正则运算;
sscanf(buf,"%*[^0-9]%[^ ]",str) 是读取 "008" 到 str 中,这个我看懂了;
sscanf(buf,"%*[^0-9]%[^ ]",sum) 这个的话,sscanf可认识 std::string;
sscanf(buf,"%*[^0-9]%[^ ]",&num) 我猜你想要的是 sscanf(buf,"%*[^0-9]%d",&num) 吧
2020-02-18 09:46
纯蓝之刃
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:76
帖 子:570
专家分:3727
注 册:2019-7-29
收藏
得分:0 
应该就是这样吧,第二条我也感觉可能是不识别,毕竟sscanf是c的函数。不过第三条我试了好多次都不对,应该就是你说的%d的问题吧。感谢感谢。

一沙一世界,一花一天堂。无限掌中置,刹那成永恒。
2020-02-18 11:23
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
程序代码:
//用正则运算检索字符串比较强大,regex库里,反正我看了一大会,只看懂一些皮毛
#include<iostream>
#include<regex>
#include<string>
using namespace std;
int main()
{
    string str{"dghdyh 1180dh ffh"};
    while(true) {
        regex e("([[:d:]]{1,})");
        smatch m;
        bool found = regex_search(str, m, e);
        if(found)
        {
            cout << "m.str(" "): " << m.str(0) << endl;
        }

        else cout << "Not Found" << endl;
        return 0;

    }
}



把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-18 16:28
叶纤
Rank: 8Rank: 8
等 级:禁止访问
威 望:1
帖 子:658
专家分:848
注 册:2019-11-22
收藏
得分:0 
sscanf虽然有类似正则运算的符号但是和正则运算还是有一些差距的
比如^这个符号在sscanf是遇到某个字符为止    比如[^A-Z]表示遇到大写字母为止
正则运算运算[^a]表示除了a以外的其它字符
*这个符号也和正则运算里有很大不同
sscanf里表示不读取正则运算里表示任意长度的字符串
如果想要用sscanf建议用
sscanf(const char *str, const char *format, ...)
format里用[=%[*] [width] [modifiers] type =]这样的用法
语法用c语法

把学习时间浪费在混坛上是傻瓜行为,更何况自己的水平连一两都没到。
2020-02-18 16:50
快速回复:在sscanf中使用正则运算,可以使用char型数组得到的数据,但不能使用i ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029941 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved