C++ Locale 库 - length
描述
它返回 [from,from_end) 范围内的外部字符数,最多可以翻译成最大内部字符数,就像应用 codecvt::in 一样输出。
声明
以下是 std::ctype::length 的声明。
C++98
int length (state_type& state, const extern_type* from, const extern_type* from_end, size_t max) const;
C++11
int length (state_type& state, const extern_type* from, const extern_type* from_end, size_t max) const;
参数
state − 它是一个状态对象。
from, from_end − 用于查找源序列的首尾字符。
max − 用于查找翻译序列的最大长度。
返回值
它根据翻译的内部字符返回字符序列的长度。
异常
No-throw guarantee − 永远不会抛出异常,即使抛出异常,facet 对象也不会发生任何变化。
数据竞争
facet 对象被访问。
示例
在下面的例子中解释了 std::ctype::length。
#include <iostream> #include <locale> #include <cwchar> #include <cstddef> int main () { typedef std::codecvt<wchar_t,char,std::mbstate_t> facet_type; std::locale loc; const facet_type& myfacet = std::use_facet<facet_type>(loc); const char source[] = "sairamkrishna mammahe"; std::mbstate_t mystate; const char * pc; wchar_t * pwc; std::size_t length = myfacet.length (mystate, source, source+sizeof(source), 30); wchar_t* dest = new wchar_t[length]; myfacet.in (mystate, source, source+sizeof(source), pc, dest, dest+length, pwc); std::wcout << dest << std::endl; delete[] dest; return 0; }
让我们编译并运行上面的程序,这将产生以下结果 −
sairamkrishna mammahe