我有一个字符串b,我想要反转它,然后将结果附加到字符串a。我试过这个,但它给了我一个运行时错误
a.insert(a.end(), b.rbegin(), b.rend())
是
terminate called after throwing an instance of 'std::length_error'
what(): basic_string::_M_create
我的代码行有什么问题?
更新:这是一个非常短的程序,抛出相同的异常:
#include <iostream>
#include <string>
using namespace std;
int main (int argc, const char* argv[]) {
string result="bbb";
string tail="aaa";
result.insert(result.end(), tail.rend(), tail.rbegin());
cout << result << endl;
return 0;
}
我在Ubuntu 16.0.4上使用GCC 5.4.0
答案 0 :(得分:-3)
您正在使用的“插入”不起作用,因为:
在pos指向的元素之前插入[first,last]范围内的字符。如果InputIt不满足InputIterator,则此重载不参与重载解析。 (自C ++ 11起)
a的begin()无法获得有效的pos。对于这种情况,您可以使用append代替:
a.append(b.rbegin(),b.rend());