-4

c++で文字列をint配列に変換する方法は?
私は次のように入力を与えています

21 100 30

としてint配列に変換します

21,100,30

4

1 に答える 1

1

TopCoder コンテストで同様のことを行ったところです。どのように行ったかをお見せしますが、それが最良の方法であるとは保証しません。

文字列を int に変換するには、関数を使用しました (#include sstream が必要です)。

int NtS ( string myS )
{
    istringstream buffer(myS);
    int value=0;
    buffer >> value;
    return value;
}

上記の関数は文字列から int を返します。あとは、最初の文字列を小さな文字列に分割するだけです。このために、この関数を使用しました

int getx(int x,string st)
{
    int nr=0;
    string ret="";
    for(int i=0;i<st.size();++i)
        {
            if(st[i]==' '){
                ++nr;
                continue;
                }
            if(nr==x)
                ret = ret + st[i];
        }

    return NtS(ret);
}

x は、文字列から取得する数値です。したがって、最初の値が必要な場合は 0 と入力します。例: 文字列から 100 が必要な場合は、getx(1,"21 100 30"); と記述します。100 (int) を返します。

これで単純な for が文字列をベクトルに変換します。

for(int i=0;i<3;++i)
    myvector.push_back(getx(i,my_string));

お役に立てれば。

于 2013-05-19T23:30:56.003 に答える