Как я могу получить размер байта std :: wstring? - PullRequest
11 голосов
/ 14 февраля 2012

Я использую std::wstring в качестве строки стиля Unicode. Теперь я хочу получить размер байта wstring. Если я использую size() метод wstring, я просто получаю общее количество символов по моему wstring. Но байт должен быть размером () * 2. Есть ли официальный способ получить этот размер в байтах? Я не хочу использовать size () * 2 в моей программе .....

Я хочу использовать в RegSetValueExW в качестве последнего параметра.

Ответы [ 4 ]

17 голосов
/ 14 февраля 2012

Используйте str.size() * sizeof(wchar_t) или эквивалентный.

Фактически, я не могу представить себе ни одну другую платформу, кроме Windows, которая имеет 2-байтовый wchar_t, 4 байта гораздо более распространены.

8 голосов
/ 14 февраля 2012

Почему бы и нет:

( str.size() * sizeof(wchar_t) ) ;

Или:

( str.size() * sizeof(std::wstring::traits_type::char_type) ) ;
1 голос
/ 23 декабря 2015
std::wstring s = L"Howdy, world!";
//...
std::size_t bytes_count = s.size() * sizeof s[0];
0 голосов
/ 15 февраля 2012

Вы можете использовать wcslen функцию

Ссылка MSDN: http://msdn.microsoft.com/en-us/library/78zh94ax.aspx

Linux: http://linux.die.net/man/3/wcslen

...