C++ 如何将字符串转换为十六进制字符串?

C++ 如何将字符串转换为十六进制字符串?,c++,C++,可能重复: 正在尝试我在StackOverflow中找到的示例代码 std::string text = "¯"; // AF in HEX ASCII. std::ostringstream result; result << std::setw(2) << std::setfill('0') << std::hex << std::uppercase; std::copy(text.begin(), text.end(), std:

可能重复:

正在尝试我在StackOverflow中找到的示例代码

std::string text = "¯"; // AF in HEX ASCII. 
std::ostringstream result;  
result << std::setw(2) << std::setfill('0') << std::hex << std::uppercase;  
std::copy(text.begin(), text.end(), std::ostream_iterator<unsigned int>(result, " "));  

char
转换为
int
0xaf
大于
0x7f
,因此是负数)。是的,我认为Hristo是对的。这里的错误假设是字符是ASCII编码的(因为ASCII的范围仅从
0x0
0x7f
),它是扩展的ASCII@Guillhermequelhos:没有“扩展ASCII”这样的东西。如果您使用的编码超过了标准化的127个字符的编码,则需要指定编码(该网站提到它是ISO-8859-1,但还有其他编码)
                    if(value > 6)
                    {   //replace
                        std::string& str = stringlist2[count];
                        const std::string& from = "FFFFFF";
                        const std::string& to = "";
                        size_t j;
                        for ( ; (j = stringlist2[count].find( from )) != string::npos ; ) {
                            stringlist2[count].replace( j, from.length(), to );
                        }
                    }
result << static_cast<int>( static_cast< unsigned char >( ch ) );
std::vector< unsigned char > tmp( text.begin(), text.end() );
struct ToUnsignedChar
{
    unsigned char operator()( char ch ) const
    {
        return static_cast<unsigned char>( ch );
    }
};

std::transform( 
    text.begin(),
    text.end(),
    std::ostream_iterator<unsigned int>( result, " " ),
    ToUnsignedChar() );