0

「yx-name」のような文字列があります。ここで、y と x は 0 から 100 までの数値です。この文字列から、「x」を C++ の整数変数に抽出する最良の方法は何でしょうか。

4

4 に答える 4

1

文字列を分割し.て整数型に直接変換できます。while ループの 2 番目の数値は、必要な数値です。サンプル コードを参照してください。

template<typename T>
T stringToDecimal(const string& s)
{
    T t = T();
    std::stringstream ss(s);
    ss >> t;
    return t;
}

int func()
{     
    string s("100.3-name");

    std::vector<int> v;
    std::stringstream ss(s);
    string line;

    while(std::getline(ss, line, '.'))
    {
         v.push_back(stringToDecimal<int>(line));
    }

    std::cout << v.back() << std::endl;

}

次のように出力されます: 3

于 2013-07-22T10:18:18.487 に答える
0

への2 つの呼び出しを使用しますunsigned long strtoul( const char *str, char **str_end, int base )。例:

#include <cstdlib>
#include <iostream>

using namespace std;

int main(){

    char const * s = "1.99-name";
    char *endp;
    unsigned long l1 = strtoul(s,&endp,10);
    if (endp == s || *endp != '.') {
        cerr << "Bad parse" << endl;
        return EXIT_FAILURE;
    }
    s = endp + 1;
    unsigned long l2 = strtoul(s,&endp,10);
    if (endp == s || *endp != '-') {
        cerr << "Bad parse" << endl;
        return EXIT_FAILURE;
    }
    cout << "num 1 = " << l1 << "; num 2 = " << l2 << endl;
    return EXIT_FAILURE;
}
于 2013-07-22T10:15:12.990 に答える
0

このスレッドにはあなたと同様の問題があるようです。役立つかもしれません;)

C++ による単純な文字列解析

于 2013-07-22T10:14:07.387 に答える