FreeBSD Manual Pages
std::codecvt_mode(3) C++ Standard Libary std::codecvt_mode(3) NAME std::codecvt_mode - std::codecvt_mode Synopsis Defined in header <codecvt> enum codecvt_mode { consume_header = 4, (since C++11) generate_header = 2, (deprecated in C++17) little_endian = 1 (removed in C++26) }; The facets std::codecvt_utf8, std::codecvt_utf16, and std::codecvt_utf8_utf16 accept an optional value of type std::codecvt_mode as a template argument, which specifies optional features of the unicode string conversion. Constants Defined in header <locale> Value Meaning little_endian assume the input is in little-endian byte order (ap- plies to UTF-16 input only, the default is big-endian) consume the byte order mark, if present at the start of input consume_header sequence, and (in case of UTF-16), rely on the byte order it specifies for decoding the rest of the input generate_header output the byte order mark at the start of the out- put sequence The recognized byte order marks are: 0xfe 0xff UTF-16 big-endian 0xff 0xfe UTF-16 little-endian 0xef 0xbb 0xbf UTF-8 (no effect on endianness) If std::consume_header is not selected when reading a file beginning with byte order mark, the Unicode character U+FEFF (Zero width non-breaking space) will be read as the first character of the string content. Example The following example demonstrates consuming the UTF-8 BOM: // Run this code #include <codecvt> #include <cwchar> #include <fstream> #include <iostream> #include <locale> #include <string> int main() { // UTF-8 data with BOM std::ofstream{"text.txt"} << "\ufeffz\u6c34\U0001d10b"; // read the UTF-8 file, skipping the BOM std::wifstream fin{"text.txt"}; fin.imbue(std::locale(fin.getloc(), new std::codecvt_utf8<wchar_t, 0x10ffff, std::consume_header>)); for (wchar_t c; fin.get(c);) std::cout << std::hex << std::showbase << (std::wint_t)c << '\n'; } Output: 0x7a 0x6c34 0x1d10b See also converts between character encodings, includ- ing UTF-8, UTF-16, codecvt UTF-32 (class template) codecvt_utf8 (C++11) converts between UTF-8 and UCS-2/UCS-4 (deprecated in C++17) (class template) (removed in C++26) codecvt_utf16 (C++11) converts between UTF-16 and UCS-2/UCS-4 (deprecated in C++17) (class template) (removed in C++26) codecvt_utf8_utf16 (C++11) converts between UTF-8 and UTF-16 (deprecated in C++17) (class template) (removed in C++26) http://cppreference.com 2024.06.10 std::codecvt_mode(3)
NAME | Synopsis | Constants | Example | Output: | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::codecvt_mode&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>
