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

标签 c++ string stl iterator

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

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;

ir 说:“字符串迭代器不兼容”,但类型相同。

最佳答案

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

要解决这个问题,将字符串存储在一个临时变量中:

string temp = stream.str();
cout << string(temp.rbegin(), temp.rend()) << endl;

这就是您已经对 st 变量执行的操作。

关于c++ - 无法从具有相同类型的两个来源之一创建 std::string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7147457/

相关文章:

c++ - 用C++读取文本文件读入特定关键字后面的值

c++ - C 和 C++ 的效率

c++ - C++中类数组成员的初始化

c# - 找出有多少字符串匹配

Java:何时使用 String[] args 而不是 String args[]

javascript 正则表达式从 6 个句子的中间提取一个单词

c++ - 如何仅使用第二个值从集合中查找对?

c++ - dev c++ 过时的库和包含

c++ - 如何在 STL map 内迭代 STL map ?

android - 如何在没有 STL 的情况下构建 Android NDK.so?