我有一个非常奇怪的问题。在我的项目中,QVector
无法使用push_back()
来添加值,但是vector可以使用它;像这样:
void Widget::SplitStr(string s, QVector<string> &v, const string c)
{
string::size_type pos1, pos2;
pos2 = s.find(c);
pos1 = 0;
while(string::npos != pos2)
{
v.push_back(s.substr(pos1, (pos2-pos1+c.size()-1)));
pos1 = pos2 + c.size();
pos2 = s.find(c, pos1);
}
if(pos1 != s.length())
v.push_back(s.substr(pos1));
}
这是一个Qt项目。只有在这个项目中,我才有这个奇怪的问题。如果有人可以帮助我,我会很感激。
非常感谢!
答案 0 :(得分:0)
您很可能在项目的其他位置有未定义的行为,并且会破坏状态。但是你也没有错误检查:函数在c.empty() == true
时不会终止 - 它将继续添加输入字符串的副本,直到内存不足为止。也许这就是发生的事情。