C++ IOS::narrow() function



The C++ std::ios::narrow() function is a utility for converting wide character strings (wchar_t*) to the narrow character strings (char*). It is used in conjunction with the ios class, which handles input/output operations. It takes a wide character string and a default character (to handle cases where conversion is not possible) and returns a narrow character string.

Syntax

Following is the syntax for std::ios::narrow() function.

char narrow (char c, char dfault) const;

Parameters

  • c − It indicates the character to be narrowed.
  • dfault − It indicates the character to be returned if c has no standard equivalent.

Return Value

It returns the narrow character of the string Otherwise, it returns default character.

Exceptions

If an exception is thrown, there are no changes in the stream.

Data races

Accesses the stream object.

Concurrent access to the same stream object may cause data races.

Example

In the following example, we are going to consider the basic wide to narrow conversion.

#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
int main()
{
    std::wstring x = L"Welcome To, TurorialsPoint!";
    std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
    std::string y = converter.to_bytes(x);
    std::cout << "Result : " << y << std::endl;
    return 0;
}

Output

Output of the above code is as follows −

Result : Welcome To, TurorialsPoint!

Example

Consider the following example, where we are going to perform the empty wide string conversion and observing the output.

#include <iostream>
#include <string>
#include <locale>
#include <codecvt>
int main()
{
    std::wstring x = L"";
    std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
    std::string y = converter.to_bytes(x);
    std::cout << "Result : '" << y << "'" << std::endl;
    return 0;
}

Output

Following is the output of the above code −

Result : ''
ios.htm