1d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant//===----------------------------------------------------------------------===// 2d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// 3d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// The LLVM Compiler Infrastructure 4d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// 5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// This file is dual licensed under the MIT and the University of Illinois Open 6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant// Source Licenses. See LICENSE.TXT for details. 7d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// 8d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant//===----------------------------------------------------------------------===// 9d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant 10d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// <locale> 11d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant 12d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// wstring_convert<Codecvt, Elem, Wide_alloc, Byte_alloc> 13d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant 14d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant// size_t converted() const; 15d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant 16d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant#include <locale> 17d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant#include <codecvt> 18d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant#include <cassert> 19d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant 20d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnantint main() 21d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant{ 22d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant typedef std::codecvt_utf8<wchar_t> Codecvt; 23d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant typedef std::wstring_convert<Codecvt> Myconv; 24d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant Myconv myconv; 25d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant assert(myconv.converted() == 0); 26d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant std::string bs = myconv.to_bytes(L"\x40003"); 27d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant assert(myconv.converted() == 1); 28d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant bs = myconv.to_bytes(L"\x40003\x65"); 29d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant assert(myconv.converted() == 2); 30d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant std::wstring ws = myconv.from_bytes("\xF1\x80\x80\x83"); 31d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant assert(myconv.converted() == 4); 32d23b464e21648e252d5ae501b2db2e93dc02b1f7Howard Hinnant} 33