• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 // <fstream>
11 
12 // template <class charT, class traits = char_traits<charT> >
13 // class basic_fstream
14 
15 // void swap(basic_fstream& rhs);
16 
17 #include <fstream>
18 #include <cassert>
19 
main()20 int main()
21 {
22     char temp1[L_tmpnam], temp2[L_tmpnam];
23     tmpnam(temp1);
24     tmpnam(temp2);
25     {
26         std::fstream fs1(temp1, std::ios_base::in | std::ios_base::out
27                                                   | std::ios_base::trunc);
28         std::fstream fs2(temp2, std::ios_base::in | std::ios_base::out
29                                                   | std::ios_base::trunc);
30         fs1 << 1 << ' ' << 2;
31         fs2 << 2 << ' ' << 1;
32         fs1.seekg(0);
33         fs1.swap(fs2);
34         fs1.seekg(0);
35         int i;
36         fs1 >> i;
37         assert(i == 2);
38         fs1 >> i;
39         assert(i == 1);
40         i = 0;
41         fs2 >> i;
42         assert(i == 1);
43         fs2 >> i;
44         assert(i == 2);
45     }
46     std::remove(temp1);
47     std::remove(temp2);
48     {
49         std::wfstream fs1(temp1, std::ios_base::in | std::ios_base::out
50                                                    | std::ios_base::trunc);
51         std::wfstream fs2(temp2, std::ios_base::in | std::ios_base::out
52                                                    | std::ios_base::trunc);
53         fs1 << 1 << ' ' << 2;
54         fs2 << 2 << ' ' << 1;
55         fs1.seekg(0);
56         fs1.swap(fs2);
57         fs1.seekg(0);
58         int i;
59         fs1 >> i;
60         assert(i == 2);
61         fs1 >> i;
62         assert(i == 1);
63         i = 0;
64         fs2 >> i;
65         assert(i == 1);
66         fs2 >> i;
67         assert(i == 2);
68     }
69     std::remove(temp1);
70     std::remove(temp2);
71 }
72