sscanf进行字符串分离、提取。以及string与数值的相互转换

利用C中的sscanf函数可以分离字符串,甚至提取字符串中的数字。
int main()
{
    char s[100];
    int a;
    sscanf("ab 123pc", "%s %dpc", s, &a);


    cout << s << ' ' << a << endl;	//ab 123
}


当字符串的字符集较小时可考虑map,如下例:
//map 实现字符串字符分离
int main()
{
    map<char, int> m;


//    m['0'] = 0;
//    m['1'] = 1;
//    m['2'] = 2;
//    m['3'] = 3;
//    m['4'] = 4;
//    m['5'] = 5;
//    m['6'] = 6;
//    m['7'] = 7;
//    m['8'] = 8;
//    m['9'] = 9;
//         ||
    for (int i = 0; i < 10; ++i)
        m['0' + i] = i;


    string num = "75326";


    int sum = 0;


    for (size_t i = 0; i < num.size(); ++i)
        sum += m[num[i]];


    cout << "sum = " << sum << endl;
    return 0;
}


C++方法可使用ostringstream/istringstream :
#include <sstream>
#include <iostream>


using namespace std;


string toString(double x)
{
    ostringstream oss;
    if (oss << x)
        return oss.str();


    return "error"; //if error
}


double fromString(const string &str)
{
    istringstream iss(str);
    double rlt;
    if (iss >> rlt)
        return rlt;


    return 0.0; //if error
}


int main()
{
    string str = toString(123.45);
    cout << str + 'f' << ' ' << fromString(str) + 3.5 << endl;//123.45f 126.95


    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值