我想寫一個簡短而愚蠢的方程分析器,並且需要圍繞給定的運算符分割字符串。我可以通過做在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