1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
 
  | 
// ctype::narrow example
#include <iostream>       // std::cout, std::getline, std::wcin
#include <locale>         // std::locale, std::ctype, std::use_facet
#include <string>         // std::wstring
int main ()
{
  std::locale loc;
  std::wstring yourname;
  std::cout << "Please enter your name: ";
  std::getline (std::wcin,yourname);
  std::wstring::size_type length = yourname.length();
  std::cout << "The first (narrow) character in your name is: ";
  std::cout << std::use_facet< std::ctype<wchar_t> >(loc).narrow ( yourname[0], '?' );
  std::cout << '\n';
  std::cout << "The narrow transformation of your name is: ";
  char * pc = new char [length+1];
  std::use_facet< std::ctype<wchar_t> >(loc).narrow ( yourname.c_str(), yourname.c_str()+length+1, '?', pc);
  std::cout << pc << '\n';
  return 0;
}
  |  |