【发布时间】:2020-12-05 19:15:24
【问题描述】:
以下代码打印一个空字符串,我无法理解为什么会这样?
#include <string>
#include <algorithm>
#include <iostream>
int main()
{
std::string s="hello";
std::string r;
std::copy(s.rbegin(),s.rend(), r.begin());
std::cout<<r;
return 0;
}
【问题讨论】:
-
不,我不想复制到字符向量。我正在考虑将字符串复制到另一个字符串。我知道其他字符串复制机制,但我希望这也能正常工作。
-
std::copy不分配内存。你有调整容器的大小。你可以std::string r(s.length(), '\0'); -
因为
r是空的,唯一可以复制到空字符串中的就是另一个空字符串。r=s;对您不起作用有什么具体原因吗? -
std::string还有一个使用迭代器的构造函数。你可以通过std::string r(s.rbegin(), s.rend());来获得这个效果,绕过std::copy。 -
@sam varshachik 我这样做更多是为了学习
标签: c++