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 中以十六进制打印出来?
编辑: 编辑为使用 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();
}
在 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 中以十六进制打印出来?
编辑: 编辑为使用 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();
}