1. 程式人生 > >sscanf進行字串分離、提取。以及string與數值的相互轉換

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