如何将std:wstring转换为std :: vector <wchar_t>

时间:2016-10-07 07:15:08

标签: c++

如果

std::wstring word = L"xxxxxxx";

然后如何进行以下转换?

std::vector<wchar_t> chars = word;

2 个答案:

答案 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)

相关问题