Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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

	  };

	  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 <fstream>
	#include <iostream>
	#include <string>
	#include <locale>
	#include <codecvt>

	int main()
	{
	    // UTF-8 data with BOM
	    std::ofstream("text.txt") << u8"\ufeffz\u6c34\U0001d10b";
	    // read the	UTF8 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 << c << '\n';
	}

Output:
	0x7a
	0x6c34
	0x1d10b

See also
				       converts	 between  character encodings,
       including UTF-8,
	  codecvt		       UTF-16, UTF-32
				       (class template)
	  codecvt_utf8		       converts	between	UTF-8 and UCS2/UCS4
	  (C++11)(deprecated in	C++17) (class template)
	  codecvt_utf16		       converts	between	UTF-16 and UCS2/UCS4
	  (C++11)(deprecated in	C++17) (class template)
	  codecvt_utf8_utf16	       converts	between	UTF-8 and UTF-16
	  (C++11)(deprecated in	C++17) (class template)

http://cppreference.com		  2022.07.31		  std::codecvt_mode(3)

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.0>

home | help