C++ 本地化库 - length



描述

它返回区间 [from, from_end) 中可以转换为最多 max 个内部字符的外部字符数量,输出如同应用 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 − 用于查找转换后序列的最大长度。

返回值

它返回字符序列的长度,以转换后的内部字符为单位。

异常

无异常保证 − 即使抛出异常,也不会抛出异常,构面对象也不会发生更改。

数据竞争

访问构面对象。

示例

下面的示例解释了 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
locale.htm
广告