最近我一直在为我的期末考试写片段。其中一项常见任务是将字符串 (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<<" ";
}
它可以工作,尽管有问题。我从 str 得到 5 而不是 005。似乎 VC++ 缩小了所有的零。如何仅使用 C++ 函数(而不是 string.h/cstring 中的 strtok)来避免它?
我在 MS VC++2008 和 gcc 上都得到了它。
谢谢!