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
26int 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

source code of libcxx/test/std/input.output/file.streams/fstreams/ifstream.cons/string.pass.cpp