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 // FILE_DEPENDENCIES: test.dat 10 11 // <fstream> 12 13 // template <class charT, class traits = char_traits<charT> > 14 // class basic_ifstream 15 16 // explicit basic_ifstream(const string& s, ios_base::openmode mode = ios_base::in); 17 18 // XFAIL: FROZEN-CXX03-HEADERS-FIXME 19 20 #include <fstream> 21 #include <cassert> 22 23 #include "test_macros.h" 24 #include "operator_hijacker.h" 25 26 int main(int, char**) 27 { 28 { 29 std::ifstream fs(std::string("test.dat")); 30 double x = 0; 31 fs >> x; 32 assert(x == 3.25); 33 } 34 { 35 std::basic_ifstream<char, operator_hijacker_char_traits<char> > fs(std::string("test.dat")); 36 std::basic_string<char, operator_hijacker_char_traits<char> > x; 37 fs >> x; 38 assert(x == "3.25"); 39 } 40 // std::ifstream(const std::string&, std::ios_base::openmode) is tested in 41 // test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp 42 // which creates writable files. 43 44 #ifndef TEST_HAS_NO_WIDE_CHARACTERS 45 { 46 std::wifstream fs(std::string("test.dat")); 47 double x = 0; 48 fs >> x; 49 assert(x == 3.25); 50 } 51 { 52 std::basic_ifstream<wchar_t, operator_hijacker_char_traits<wchar_t> > fs(std::string("test.dat")); 53 std::basic_string<wchar_t, operator_hijacker_char_traits<wchar_t> > x; 54 fs >> x; 55 assert(x == L"3.25"); 56 } 57 // std::wifstream(const std::string&, std::ios_base::openmode) is tested in 58 // test/std/input.output/file.streams/fstreams/ofstream.cons/string.pass.cpp 59 // which creates writable files. 60 #endif 61 62 return 0; 63 } 64