如何使用C ++中的ascii字符代码创建std :: wstring?

时间:2010-08-11 14:34:44

标签: c++ string ascii wstring

我需要使用具有以下ascii值的字符创建一个wstring:30,29,28,27,26,25。

在VB6中,我会做asc(30)+ asc(29)+ etc ......

什么是C ++等价物?

谢谢!

2 个答案:

答案 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终结者!