最近、私はファイナルのスニペットを書くことに取り組んでいます。一般的なタスクの 1 つは、文字列 (std::string) を単語に分割することです。場合によっては、これらの文字列に整数を含めることができます。
私はスニペットを書きました:
#include <sstream>
#include <iostream>
#include <vector>
using namespace std;
int main(void)
{
string str="23 005 123";
vector<int>myints;
istringstream iss(str);
string word;
while(iss>>word)
{
int a;
istringstream(word)>>a;
myints.push_back(a);
}
for (vector<int>::iterator it=myints.begin();it!=myints.end();++it)
cout<<*it<<" ";
}
問題はありますが、動作します。005 ではなく str から 5 を取得しました。VC++ はすべてのゼロを縮小しているようです。(string.h/cstring の strtok ではなく) C++ 関数のみを使用して回避するにはどうすればよいですか?
MS VC++2008 と gcc の両方で入手できます。
ありがとう!