c++で文字列をint配列に変換する方法は?
私は次のように入力を与えています
21 100 30
としてint配列に変換します
21,100,30
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));
お役に立てれば。