我需要使用具有以下ascii值的字符创建一个wstring:30,29,28,27,26,25。
在VB6中,我会做asc(30)+ asc(29)+ etc ......
什么是C ++等价物?
谢谢!
答案 0 :(得分:5)
这是关于字符集转换的技巧问题吗? :)因为标准不保证ASCII字符由wchar_t中的ASCII整数值表示(即使对于大多数编译器/系统,这也是如此)。如果重要,请使用适当的区域设置显式扩展您的char:
std::wstring s; std::locale loc("C"); // pick a locale with ASCII encoding 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 *时会添加它。
答案 1 :(得分:1)
std :: wstring只不过是伪装成字符串的std :: vector。
因此,您应该能够使用push_back方法,如下所示:
std::wstring s;
s.push_back(65);
s.push_back(0);
std::wcout << s << std::endl;
不要忘记0终结者!