C++ Locale 库 - 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。
异常
如果抛出异常,则 facet 对象不会发生任何变化,尽管范围内的字符可能已受到影响。
数据竞争
访问对象和 range [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