gpt4 book ai didi

c++ - 字符串不会使用 reverse_copy 反转

转载 作者:IT老高 更新时间:2023-10-28 12:29:02 28 4
gpt4 key购买 nike

如果我有一个字符串 A 等于 "abc" 并且我想要字符串 B 这是字符串 A,为什么我不能使用 reverse_copy() 来做到这一点?

std::string A = "abc";
std::string B;

std::reverse_copy(A.begin(), A.end(), B.begin());

std::cout << B << std::endl; // no output

reverse_copy() 可用于字符串吗? reverse() 似乎有效。

最佳答案

您尝试复制到的 string 太短(零长度)。你必须让它足够长才能接受复制的数据:

std::string A = "abc";
std::string B;
B.resize(A.size()); // make B big enough

std::reverse_copy(A.begin(), A.end(), B.begin());

std::cout << B << '\n';

目前你正在写结束B导致未定义的行为

另一种方法是使用称为 std::back_insert_iterator 的特殊迭代器。 ,将字符推到目标字符串的后面:

std::string A = "abc";
std::string B;

std::reverse_copy(A.begin(), A.end(), std::back_inserter(B));

std::back_inserter()函数返回 std::back_insert_iterator对于您作为参数提供的字符串(或任何实现 push_back() 的容器,例如 std::string::push_back() )。

注意: std::reverse_copy使用标准 std::string 迭代器调用(如本例所示)将简单地反转字符串的 代码单元 而不是 必然 字符(取决于编码)。例如,包含多字节字符的 UTF-8 编码字符串不会被此函数正确反转,因为多字节序列也会被反转,使其无效。

关于c++ - 字符串不会使用 reverse_copy 反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55939628/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com