我想写一个简短而愚蠢的方程分析器,并且需要围绕给定的运算符分割字符串。我可以通过做在C++左边的分割字符串
return std::string(oprtr + 1, equ.end());
其中EQU是字符串,oprtr是我需要从分割位置的迭代器分离出来的字符串的右侧。这样完美的作品,但分裂断左侧,但并不:
return std::string(equ.begin(), oprtr - 1);
====
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_S_create
我已经试过各种我是真的不值得骄傲的其他讨厌的解决方法,如
return equ.substr(0, std::distance(equ.begin(), oprtr));
这一个不会给出错误,但实际上只是返回整个方程。我在这里做错了什么?
没有足够的代码来弄清楚。什么是oprtr? – MSalters
oprtr是我需要从中拆分的位置的迭代器。对不起,我会将其添加到问题文本中。 – Sourec
'返回std :: string(equ.begin(),oprtr);'和'返回std :: string(oprtr + 1,equ.end());'看起来对我很正确。不知道为什么你想从你的最终位置减去一个。 – john