sscanfは文字列分離、抽出を行う.stringと数値の相互変換

1586 ワード

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 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 
#include 


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