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

FreeBSD Manual Pages

  
 
  

home | help
std::fwide(3)		      C++ Standard Libary		 std::fwide(3)

NAME
       std::fwide - std::fwide

Synopsis
	  Defined in header <cwchar>
	  int fwide( std::FILE*	stream,	int mode );

	  If mode > 0, attempts	to make	stream wide-oriented. If mode <	0, at-
       tempts to make
	  stream  byte-oriented. If mode==0, only queries the current orienta-
       tion of the
	  stream.

	  If the orientation of	the stream has already been decided  (by  exe-
       cuting output or	by
	  an earlier call to fwide), this function does	nothing.

Parameters
	  stream - pointer to the C I/O	stream to modify or query
	  mode	  -  integer  value  greater than zero to set the stream wide,
       less than zero to
		   set the stream narrow, or zero to query only

Return value
	  An integer greater than zero if the stream  is  wide-oriented	 after
       this call, less
	  than	zero  if the stream is byte-oriented after this	call, and zero
       if the stream has
	  no orientation.

Example
	  The following	code sets and resets the stream	orientation.

       // Run this code

	#include <cwchar>
	#include <cstdio>
	#include <cstdlib>
	#include <iostream>

	void show_orientation(int n)
	{
	    n <	0 ? std::wcout << "\tnarrow orientation\n" :
	    n >	0 ? std::wcout << "\twide orientation\n" :
		    std::wcout << "\tno	orientation\n" ;
	}

	void try_read(FILE* fp)
	{
	    if (const int c = std::fgetc(fp); c	== EOF)
		std::wcout << "\tnarrow	character read failed\n";
	    else
		std::wcout  <<	 "\tnarrow   character	 read	'"   <<	  sta-
       tic_cast<char>(c) << "'\n";

	    if (const wint_t wc	= std::fgetwc(fp); wc == WEOF)
		std::wcout << "\twide character	read failed\n";
	    else
		std::wcout    <<   "\twide   character	 read	'"   <<	  sta-
       tic_cast<wchar_t>(wc) <<	"'\n";
	}

	int main()
	{
	    enum fwide_orientation : int { narrow = -1,	query, wide };

	    FILE* fp = std::fopen("main.cpp", "r");
	    if (!fp) {
		std::wcerr << "fopen() failed\n";
		return EXIT_FAILURE;
	    }

	    std::wcout << "1) A	newly opened stream has	no orientation.\n";
	    show_orientation(std::fwide(fp, fwide_orientation::query));

	    std::wcout << "2) Establish	byte orientation.\n";
	    show_orientation(std::fwide(fp, fwide_orientation::narrow));
	    try_read(fp);

	    std::wcout << "3) Only freopen() can reset stream orientation.\n";
	    if (std::freopen("main.cpp", "r", fp) == NULL)
	    {
		std::wcerr << "freopen() failed\n";
		return EXIT_FAILURE;
	    }

	    std::wcout << "4) A	reopened stream	has no orientation.\n";
	    show_orientation(std::fwide(fp, fwide_orientation::query));

	    std::wcout << "5) Establish	wide orientation.\n";
	    show_orientation(std::fwide(fp, fwide_orientation::wide));
	    try_read(fp);

	    std::fclose(fp);
	}

Possible output:
	1) A newly opened stream has no	orientation.
		no orientation
	2) Establish byte orientation.
		narrow orientation
		narrow character read '#'
		wide character read failed
	3) Only	freopen() can reset stream orientation.
	4) A reopened stream has no orientation.
		no orientation
	5) Establish wide orientation.
		wide orientation
		narrow character read failed
		wide character read '#'

See also
	  fopen	opens a	file
		(function)

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

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::fwide&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help