C++ Locale 库 - narrow
描述
它用于窄字符,在内部,这个函数简单地调用虚拟受保护成员 do_narrow,默认情况下它在通用模板和 char 特化 (ctype<char>) 中执行上述操作。
声明
以下是 std::ctype::narrow 的声明。
C++98
char narrow (char_type c, char dfault) const;
C++11
char narrow (char_type c, char dfault) const;
参数
c − 它是一个字符类型。
low,high − 它是一个指向字符序列开头和结尾的指针。
to − 它是指向构面字符类型的一系列元素的指针。
dfault − 这是一个默认的字符值。
返回值
它返回 c 的变换。
异常
如果抛出异常,则 facet 对象不会发生任何变化,尽管范围内的字符可能已受到影响。
数据竞争
访问对象和 range [low,high) 中的元素。
示例
在下面的例子中解释了 std::ctype::narrow。
#include <iostream> #include <locale> #include <string> int main () { std::locale loc; std::wstring yourname; std::cout << "Please enter your a word: "; std::getline (std::wcin,yourname); std::wstring::size_type length = yourname.length(); std::cout << "The first (narrow) character in your word is: "; std::cout << std::use_facet< std::ctype<wchar_t> >(loc).narrow ( yourname[0], '?' ); std::cout << '\n'; std::cout << "The narrow transformation of your word 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; }
让我们编译并运行上面的程序,这将产生以下结果 −
Please enter your a word: sai The first (narrow) character in your word is: s The narrow transformation of your word is: sai