我需要使用具有以下 ascii 值的字符创建一个 wstring:30、29、28、27、26、25。
在 VB6 中,我会做 asc(30) + asc(29)+ 等...
什么是 C++ 等价物?
谢谢!
这是关于字符集转换的技巧问题吗?:) 因为标准不保证 ASCII 字符由 wchar_t 中的 ASCII 整数值表示(即使对于大多数编译器/系统来说,这将是正确的)。如果重要,请使用适当的语言环境显式扩展您的字符:
std::wstring s; std::locale loc("C"); // 选择一个带有 ASCII 编码的语言环境 s.push_back(std::use_facet<std::ctype<wchar_t> >(loc).widen(30)); s.push_back(std::use_facet<std::ctype<wchar_t> >(loc).widen(29)); s.push_back(std::use_facet<std::ctype<wchar_t> >(loc).widen(28));
不要以尾随 0 结尾,它是在您通过调用 .c_str() 将 wstring 转换为 wchar_t * 时添加的
std::wstring 只不过是伪装成字符串的 std::vector。
因此,您应该能够使用 push_back 方法,如下所示:
std::wstring s;
s.push_back(65);
s.push_back(0);
std::wcout << s << std::endl;
不要忘记 0 终结符!