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_istream<charT,traits>& 14 // operator>>(basic_istream<charT,traits>& is, 15 // basic_string<charT,traits,Allocator>& str); 16 17 #include <string> 18 #include <sstream> 19 #include <cassert> 20 21 #include "min_allocator.h" 22 23 int main() 24 { 25 { 26 std::istringstream in("a bc defghij"); 27 std::string s("initial text"); 28 in >> s; 29 assert(in.good()); 30 assert(s == "a"); 31 assert(in.peek() == ' '); 32 in >> s; 33 assert(in.good()); 34 assert(s == "bc"); 35 assert(in.peek() == ' '); 36 in.width(3); 37 in >> s; 38 assert(in.good()); 39 assert(s == "def"); 40 assert(in.peek() == 'g'); 41 in >> s; 42 assert(in.eof()); 43 assert(s == "ghij"); 44 in >> s; 45 assert(in.fail()); 46 } 47 { 48 std::wistringstream in(L"a bc defghij"); 49 std::wstring s(L"initial text"); 50 in >> s; 51 assert(in.good()); 52 assert(s == L"a"); 53 assert(in.peek() == L' '); 54 in >> s; 55 assert(in.good()); 56 assert(s == L"bc"); 57 assert(in.peek() == L' '); 58 in.width(3); 59 in >> s; 60 assert(in.good()); 61 assert(s == L"def"); 62 assert(in.peek() == L'g'); 63 in >> s; 64 assert(in.eof()); 65 assert(s == L"ghij"); 66 in >> s; 67 assert(in.fail()); 68 } 69 #if TEST_STD_VER >= 11 70 { 71 typedef std::basic_string<char, std::char_traits<char>, min_allocator<char>> S; 72 std::istringstream in("a bc defghij"); 73 S s("initial text"); 74 in >> s; 75 assert(in.good()); 76 assert(s == "a"); 77 assert(in.peek() == ' '); 78 in >> s; 79 assert(in.good()); 80 assert(s == "bc"); 81 assert(in.peek() == ' '); 82 in.width(3); 83 in >> s; 84 assert(in.good()); 85 assert(s == "def"); 86 assert(in.peek() == 'g'); 87 in >> s; 88 assert(in.eof()); 89 assert(s == "ghij"); 90 in >> s; 91 assert(in.fail()); 92 } 93 { 94 typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, min_allocator<wchar_t>> S; 95 std::wistringstream in(L"a bc defghij"); 96 S s(L"initial text"); 97 in >> s; 98 assert(in.good()); 99 assert(s == L"a"); 100 assert(in.peek() == L' '); 101 in >> s; 102 assert(in.good()); 103 assert(s == L"bc"); 104 assert(in.peek() == L' '); 105 in.width(3); 106 in >> s; 107 assert(in.good()); 108 assert(s == L"def"); 109 assert(in.peek() == L'g'); 110 in >> s; 111 assert(in.eof()); 112 assert(s == L"ghij"); 113 in >> s; 114 assert(in.fail()); 115 } 116 #endif 117 } 118