gpt4 book ai didi

c++ - 将 cout 与 basic_string 一起使用

转载 作者:太空狗 更新时间:2023-10-29 20:35:22 32 4
gpt4 key购买 nike

cout 适用于字符串(又名 basic_string<char>)和所有数字类型(intcharunsigned chardouble 等)。但是它无法处理 basic_string<unsigned char> .

#include <iostream>
#include <string>
int main()
{
std::basic_string<unsigned char> zzz(3, 'z');
std::cout << zzz << std::endl;
return 0;
}

这不编译

error: invalid operands to binary expression ('ostream' (aka 'basic_ostream<char>') and 'std::basic_string<unsigned char>')

我希望它的行为方式与字符串相同。 ostream 不处理 std::basic_string<unsigned char> 是有原因的吗? ?

最佳答案

标准库中没有匹配的 std::ostream 重载。但是,您可以提供自己的重载。 尽管对于不是 std::isprint 的字符,您可能会有不同的行为

#include <iostream>
#include <string>

std::ostream& operator << (std::ostream& os, const std::basic_string<unsigned char>& str){
for(auto ch : str)
os << static_cast<char>(ch);
return os;
}

int main()
{
std::basic_string<unsigned char> zzz(3, 'z');
std::cout << zzz << std::endl;
return 0;
}

打印:

zzz

Demo

关于c++ - 将 cout 与 basic_string<unsigned char> 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43095864/

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