Home | History | Annotate | Download | only in istringstream.assign
      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 // UNSUPPORTED: c++98, c++03
     11 
     12 // <sstream>
     13 
     14 // template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
     15 // class basic_istringstream
     16 
     17 // basic_istringstream& operator=(basic_istringstream&& rhs);
     18 
     19 #include <sstream>
     20 #include <cassert>
     21 
     22 int main()
     23 {
     24     {
     25         std::istringstream ss0(" 123 456");
     26         std::istringstream ss;
     27         ss = std::move(ss0);
     28         assert(ss.rdbuf() != 0);
     29         assert(ss.good());
     30         assert(ss.str() == " 123 456");
     31         int i = 0;
     32         ss >> i;
     33         assert(i == 123);
     34         ss >> i;
     35         assert(i == 456);
     36     }
     37     {
     38         std::istringstream s1("Aaaaa Bbbbb Cccccccccc Dddddddddddddddddd");
     39         std::string s;
     40         s1 >> s;
     41 
     42         std::istringstream s2 = std::move(s1);
     43         s2 >> s;
     44         assert(s == "Bbbbb");
     45 
     46         std::istringstream s3;
     47         s3 = std::move(s2);
     48         s3 >> s;
     49         assert(s == "Cccccccccc");
     50 
     51         s1 = std::move(s3);
     52         s1 >> s;
     53         assert(s == "Dddddddddddddddddd");
     54     }
     55     {
     56         std::wistringstream ss0(L" 123 456");
     57         std::wistringstream ss;
     58         ss = std::move(ss0);
     59         assert(ss.rdbuf() != 0);
     60         assert(ss.good());
     61         assert(ss.str() == L" 123 456");
     62         int i = 0;
     63         ss >> i;
     64         assert(i == 123);
     65         ss >> i;
     66         assert(i == 456);
     67     }
     68     {
     69         std::wistringstream s1(L"Aaaaa Bbbbb Cccccccccc Dddddddddddddddddd");
     70         std::wstring s;
     71         s1 >> s;
     72 
     73         std::wistringstream s2 = std::move(s1);
     74         s2 >> s;
     75         assert(s == L"Bbbbb");
     76 
     77         std::wistringstream s3;
     78         s3 = std::move(s2);
     79         s3 >> s;
     80         assert(s == L"Cccccccccc");
     81 
     82         s1 = std::move(s3);
     83         s1 >> s;
     84         assert(s == L"Dddddddddddddddddd");
     85     }
     86 }
     87