无法从具有相同类型的两个源之一创建std :: string

Yol*_*ola 1 c++ string iterator stl

为什么最后一行不起作用?

ostringstream stream;
int f = 12345;
stream << f;
string st = stream.str();
cout << typeid(st.rbegin()).name() << endl;
cout << typeid(stream.str().rbegin()).name() << endl;
cout << string(st.rbegin(), st.rend()) << std::endl;
cout << string(stream.str().rbegin(), stream.str().rend()) << endl;
Run Code Online (Sandbox Code Playgroud)

ir说:"字符串迭代器不兼容",但键入相同.

Sve*_*ven 6

调用该ostringstream::str()方法会创建一个新的字符串对象,因此您将使用来自两个不同对象的迭代器.

要解决此问题,请将字符串存储在临时变量中:

string temp = stream.str();
cout << string(temp.rbegin(), temp.rend()) << endl;
Run Code Online (Sandbox Code Playgroud)

st已经对变量做了什么.