Мне было интересно, был ли C ++ эквивалент Javas .GetBytes () метод. Я читаю файл .txt и мне нужно преобразовать каждую строку в байты.
Заранее спасибо!
std :: string :: data является эквивалентом.
В C ++ char
это байт. И так std::string
это уже последовательность байтов.
Тем не менее, вы можете захотеть последовательность unsigned char
,
Один из способов — просто скопировать байтовые значения из строки, например, в std::vector
:
using Byte = unsigned char;
vector<Byte> const bytes( s.begin(), s.end() );
Если вы читаете текстовый файл в std::wstring
за строку, например используя широкий поток, то байты зависят от вашей предпочтительной кодировки этой строки.
На практике, за исключением, возможно, мэйнфрейма IBM, широкая строка C ++ имеет кодировку UTF-16 или UTF-32. Для этих двух кодировок стандартная библиотека предоставляет специализации std::codecvt
которые могут конвертировать в и из UTF-8.
Если вы хотите произвольную кодировку из широкой строки, то вам не повезло в том, что касается стандартной библиотеки C ++, извините.