1//===----------------------------------------------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9// <locale>
10
11// ADDITIONAL_COMPILE_FLAGS: -D_LIBCPP_DISABLE_DEPRECATION_WARNINGS -D_LIBCPP_ENABLE_CXX26_REMOVED_CODECVT -D_LIBCPP_ENABLE_CXX26_REMOVED_WSTRING_CONVERT
12
13// wbuffer_convert<Codecvt, Elem, Tr>
14
15// XFAIL: no-wide-characters
16
17#include <cassert>
18#include <codecvt>
19#include <locale>
20#include <sstream>
21
22int main(int, char**) {
23 std::string storage;
24 {
25 std::ostringstream bytestream;
26 std::wbuffer_convert<std::codecvt_utf8<wchar_t> > mybuf(bytestream.rdbuf());
27 std::wostream mystr(&mybuf);
28 mystr << L"Hello" << std::endl;
29 storage = bytestream.str();
30 }
31 {
32 std::istringstream bytestream(storage);
33 std::wbuffer_convert<std::codecvt_utf8<wchar_t> > mybuf(bytestream.rdbuf());
34 std::wistream mystr(&mybuf);
35 std::wstring ws;
36 mystr >> ws;
37 assert(ws == L"Hello");
38 }
39
40 return 0;
41}
42

source code of libcxx/test/std/localization/locales/locale.convenience/conversions/conversions.buffer/test.pass.cpp