C++ 本地化库 - out



描述

它用于转换输出字符,并且该函数一旦未能转换字符或到达 from_end 并且其字符已成功转换,便停止转换。

声明

以下是 std::ctype::out 的声明。

C++98

	
result out (state_type& state, 
   const intern_type* from, const intern_type* from_end, const intern_type*& from_next,
   extern_type* to, extern_type* to_limit, extern_type*& to_next) const;

C++11

result out (state_type& state, 
   const intern_type* from, const intern_type* from_end, const intern_type*& from_next,
   extern_type* to, extern_type* to_limit, extern_type*& to_next) const;

参数

  • state − 这是一个状态对象。

  • from, from_end − 用于查找源序列的初始和最终字符。

  • from_next − 用于在上述范围内查找元素。

  • to_next − 用于在上述范围内查找元素。

返回值

它返回 codecvt_base::result。

异常

如果抛出异常,则构面对象不会发生更改,尽管范围内的字符可能已受影响。

数据竞争

访问对象和范围 [low,high) 中的元素。

示例

下面的示例解释了 std::ctype::out。

#include <iostream>
#include <locale>
#include <string>
#include <cwchar>

int main () {
   typedef std::codecvt<wchar_t,char,std::mbstate_t> facet_type;

   std::locale mylocale;

   const facet_type& myfacet = std::use_facet<facet_type>(mylocale);

   std::wstring mywstring;
   std::cout << "Enter a sentence: ";
   std::getline (std::wcin,mywstring);

   std::wstring::size_type length = mywstring.length();

   char* pstr= new char [length+1];
   std::mbstate_t mystate = std::mbstate_t();
   const wchar_t* pwc;
   char* pc;

   facet_type::result myresult = myfacet.out (mystate,
      mywstring.c_str(), mywstring.c_str()+length+1, pwc, pstr, pstr+length+1, pc);

   if (myresult==facet_type::ok)
      std::cout << "Translation successful and sentance should be: " << pstr << '\n';

   delete[] pstr;

   return 0;
}

让我们编译并运行上述程序,这将产生以下结果:

Enter a sentence: sai ram 
Translation successful and sentance should be: sai ram
locale.htm
广告