1 //===----------------------------------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // <string>
11
12 // template<class charT, class traits, class Allocator>
13 // basic_ostream<charT, traits>&
14 // operator<<(basic_ostream<charT, traits>& os,
15 // const basic_string<charT,traits,Allocator>& str);
16
17 #include <string>
18 #include <sstream>
19 #include <cassert>
20
21 #include "min_allocator.h"
22
main()23 int main()
24 {
25 {
26 std::ostringstream out;
27 std::string s("some text");
28 out << s;
29 assert(out.good());
30 assert(s == out.str());
31 }
32 {
33 std::ostringstream out;
34 std::string s("some text");
35 out.width(12);
36 out << s;
37 assert(out.good());
38 assert(" " + s == out.str());
39 }
40 {
41 std::wostringstream out;
42 std::wstring s(L"some text");
43 out << s;
44 assert(out.good());
45 assert(s == out.str());
46 }
47 {
48 std::wostringstream out;
49 std::wstring s(L"some text");
50 out.width(12);
51 out << s;
52 assert(out.good());
53 assert(L" " + s == out.str());
54 }
55 #if __cplusplus >= 201103L
56 {
57 typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
58 std::basic_ostringstream<S::value_type, S::traits_type, S::allocator_type> out;
59 S s("some text");
60 out << s;
61 assert(out.good());
62 assert(s == out.str());
63 }
64 {
65 typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S;
66 std::basic_ostringstream<S::value_type, S::traits_type, S::allocator_type> out;
67 S s("some text");
68 out.width(12);
69 out << s;
70 assert(out.good());
71 assert(" " + s == out.str());
72 }
73 {
74 typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t>> S;
75 std::basic_ostringstream<S::value_type, S::traits_type, S::allocator_type> out;
76 S s(L"some text");
77 out << s;
78 assert(out.good());
79 assert(s == out.str());
80 }
81 {
82 typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t>> S;
83 std::basic_ostringstream<S::value_type, S::traits_type, S::allocator_type> out;
84 S s(L"some text");
85 out.width(12);
86 out << s;
87 assert(out.good());
88 assert(L" " + s == out.str());
89 }
90 #endif
91 }
92