c++ 如何将 wchar_t* 读入 std::wsting 变量并以十六进制打印

c++ How to read a wchar_t* to into a std::wsting variable and print in HEX

在 main 中,我有一个包含 unicode 字符的 wstring mystr。

int main()
{
   std::wcout << std::hex << 16 << endl;
   std::wstring mystr = L"abc - ";
   result = myfun(mystr);

   // here I want to print out my variable result 
   //std::wcout << hex<<result;
}

我还有一个函数 myfun,它使用这个 wstring 并使用 incrementfun[=26= 打印出每个字母(十六进制!) ] -功能。这工作正常。

std::wstring myfun(std::wstring mystr){  
    wchar_t* ptrToCC = &mystr[0]    ;
    std::wstring Out    ;

    while (*ptrToCC != 0)
    {
        std::cout << "(" << std::hex << *ptrToCC << ")";       // first print is OK
        ptrToCC = incrementfun(ptrToCC);   
    }
    Out = "(" + std::hex + *ptrToCC + ")"                      // none of this not works
    Out = "(" + *ptrToCC + ")";
    Out  << "(" << std::hex << *ptrToCC << ")";

    return Out;
}

在第一次打印时,此函数打印出以下行,这很好

(61)(62)(63)(20)(2d)(20)

现在我想使用函数 myfun 将 return 值传给 main,我试图将这些值读入一个变量以将其传回。但是我无法将它们读入变量,因此我无法在 main 中打印它。 我如何读取这些值并在 main 中以十六进制打印出来?

使用 std::wstringstream:

编辑: 编辑为使用 range-based for loop

std::wstring myfun(std::wstring const& mystr) {  
    std::wstringstream out;

    for (auto const& ch : mystr)
        out << "(" << std::hex << static_cast<int>(ch) << ")";

    return out.str();
}