从字符串中保存矢量中的整数

时间:2014-05-22 19:48:55

标签: c++ string vector atoi

我有这个字符串,其中包含用/分隔的数字,就像这个24/2/13一样。我想将它们单独保存在int的向量中,但它给了我这个错误expected unqualified-id before '.' token|。我知道这可能是一个愚蠢的错误,但那只是现在的qay :)。这是代码:


int t;
string s;
for(int i=0;i<final_states.size();i++)
{
    if(final_states.at(i)!='/')
        s.push_back(final_states.at(i));
    else
    {
        t=atoi(s.c_str());
        temp_final_states.push_back(t);
        s.clear();
    }
}

3 个答案:

答案 0 :(得分:0)

我认为这是一个编译错误。 看起来您正在迭代 final_states 。但是你试着在 temp_final_states 上调用push_back()。我假设你打算将它作为同一个集合。

答案 1 :(得分:0)

请参阅以下示例代码http://ideone.com/id7E22

char str[] ="22/33/44";
  char * pch;
  cout<<"Splitting string into tokens:\n"<<str;
  pch = strtok (str,"/");
vector<int> vec;
  while (pch != NULL)
  {
    int val = atoi(pch);
    cout<<"   "<<val;
    vec.push_back(val);
    pch = strtok (NULL, "/");
  }

答案 2 :(得分:0)

假设您的字符串始终以数字值开头,并且&#39; /&#39;字符不在字符串的末尾,这应该为你做:

std::string final_states="24/2/13";
std::vector<int> temp_final_states;

temp_final_states.push_back(atoi(final_states.c_str()));
std::string::size_type index = final_states.find('/');

for (; index != std::string::npos; index = final_states.find('/', index) )
{
    ++index;
    const char* str = final_states.c_str() + index;
    temp_final_states.push_back(atoi(str));
}