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// <sstream>
10
11// template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> >
12// class basic_istringstream
13
14// basic_istringstream& operator=(basic_istringstream&& rhs);
15
16#include <sstream>
17#include <cassert>
18
19#include "test_macros.h"
20
21int main(int, char**)
22{
23 {
24 std::istringstream ss0(" 123 456");
25 std::istringstream ss;
26 ss = std::move(ss0);
27 assert(ss.rdbuf() != 0);
28 assert(ss.good());
29 assert(ss.str() == " 123 456");
30 int i = 0;
31 ss >> i;
32 assert(i == 123);
33 ss >> i;
34 assert(i == 456);
35 }
36 {
37 std::istringstream s1("Aaaaa Bbbbb Cccccccccc Dddddddddddddddddd");
38 std::string s;
39 s1 >> s;
40
41 std::istringstream s2 = std::move(s1);
42 s2 >> s;
43 assert(s == "Bbbbb");
44
45 std::istringstream s3;
46 s3 = std::move(s2);
47 s3 >> s;
48 assert(s == "Cccccccccc");
49
50 s1 = std::move(s3);
51 s1 >> s;
52 assert(s == "Dddddddddddddddddd");
53 }
54#ifndef TEST_HAS_NO_WIDE_CHARACTERS
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#endif // TEST_HAS_NO_WIDE_CHARACTERS
87
88 return 0;
89}
90

source code of libcxx/test/std/input.output/string.streams/istringstream/istringstream.assign/move.pass.cpp