C++ wctob()

The wctob() function in C++ converts a wide character to a single byte character (of type char) if its multibyte character equivalent is a single byte.

The wctob() function is defined in <cwchar> header file.

wctob() prototype

int wctob( wint_t c );

The wctob() function takes a wide character c as its argument and returns its narrow single byte character equivalent if possible.

wctob() Parameters

  • c: The wide character to narrow.

wctob() Return value

If c represent a multibyte character of length 1 in initial shift state, the wctob() function returns the single byte representation of c. Otherwise EOF is returned.

Example: How wctob() function works?

#include <cwchar>
#include <clocale>
#include <iostream>
#include <cstdio>
using namespace std;

void test_wctob(wchar_t c)
	int ch = wctob(c);
	if (ch != EOF)
		wcout << c << L" can be narrowed" << endl;
		wcout << c << L" can't be narrowed" << endl;

int main()
	setlocale(LC_ALL, "en_US.utf8");

	wchar_t wc1 = L'm';
	wchar_t wc2 = L'\u00c6';
	return 0;

When you run the program, the output will be:

m can be narrowed
Æ can't be narrowed