如果
std::wstring word = L"xxxxxxx";
然后如何进行以下转换?
std::vector<wchar_t> chars = word;
答案 0 :(得分:3)
用一对迭代器初始化它:
std::vector<wchar_t> chars(word.begin(), word.end());
上面不会添加null终止符(但如果字符串包含一个,则会被复制)。如果需要,请使用一对指向基础字符串数据的指针初始化向量:
std::vector<wchar_t> chars(word.c_str(), word.c_str() + word.size() + 1);
请记住为null终止符添加1,否则效果将与第一个示例中的效果相同。
答案 1 :(得分:1)
有一种方法可以通过使用来自wstring的c_str()或data()来一次性创建它,包括null终止符。 (在C ++ 11中,这些都被保证为空终止),然后为结束位置添加size()+ 1,也保证是明确定义的行为。
因此:
std::vector<wchar_t> chars( word.c_str(), word.c_str() + word.size() + 1 );
(或使用data()而不是c_str()但只使用C ++ 11)