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

Saving integers in vector from string

本文关键字:整数 保存 字符串      更新时间:2023-10-16

我有这个字符串,其中包含用/彼此分割的数字,例如24/2/13。我想把它们单独保存在一个int向量中,但它给了我这个错误,expected unqualified-id before '.' token|。我知道这可能是一个愚蠢的错误,但这只是现在的问题:)。下面是代码:


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();
    }
}

假设你的字符串总是以一个数字值开始,'/'字符不在字符串的末尾,这应该为你做:

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));
}

我认为这是一个编译错误。看起来您正在遍历final_states。但是你试着在temp_final_states上调用push_back()。

参考下面的示例代码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, "/");
  }