gpt4 book ai didi

c++ - 将 basic_string 转换为 basic_string ,反之亦然

转载 作者:太空狗 更新时间:2023-10-29 20:23:07 25 4
gpt4 key购买 nike

来自以下内容

Can I turn unsigned char into char and vice versa?

似乎转换 basic_string<unsigned char>basic_string<char> (即 std::string )是一个有效的操作。但我不知道该怎么做。

例如哪些函数可以执行以下转换,填写这些假设的功能stouutos函数?

typedef basic_string<unsigned char> u_string;
int main() {
string s = "dog";
u_string u = stou(s);
string t = utos(u);
}

我试过使用 reinterpret_cast , static_cast和其他一些,但我对其预期功能的了解有限。

最佳答案

假设你想把原文中的每个字符都复制过来并转换,解决方法很简单

 u_string u(s.begin(), s.end());
std:string t(u.begin(), u.end());

对于 s 的任何内容,u 的形成都是直接的,因为从 signed char 转换为 unsigned char 简单地使用模运算。因此,无论 char 实际上是 signed 还是 unsigned,这都有效。

如果 char 实际上是 signed char 并且 u< 中的任何单个字符,则 t 的形成将具有未定义的行为 的值超出了 signed char 可以表示的范围。这是因为 signed char 溢出。对于您的特定示例,通常不会发生未定义的行为。

关于c++ - 将 basic_string<unsigned char> 转换为 basic_string<char> ,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34624505/

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