DXフレームワーク　リファレンス・マニュアル 0.01 DXフレームワークのリファレンスです。詳細は公式wiki

- メインページ
- 関連ページ
- クラス
- ファイル

- ファイル一覧

File.h
1 #pragma once
2 #include <fstream>
3 #include <sstream>
4 #include <iostream>
5
6 namespace DXFW
7 {
9 enum class FileMode
10 {
11 Read,
12 Write,
13 Add,
14 None,
15 };
16
30 class File
31 {
32 private:
33 std::ifstream fst;
34 bool canRead;
35 bool canWrite;
36 bool canAdd;
37 bool isBinary;
38 std::string fileName;
39
40 public:
41
44 File(const char* ファイル名 , FileMode 読み書きモード , bool バイナリファイル = false )
45 {
46 File::Open( ファイル名 , 読み書きモード , バイナリファイル );
47 }
48
51 bool Open(const char* ファイル名 , FileMode 読み書きモード , bool バイナリファイル = false )
52 {
53 std::string mode;
54 this->fileName = ファイル名;
55
56 switch(読み書きモード)
57 {
58 case FileMode::Read:
59 if( isBinary ) fst.open( ファイル名 , std::ios::in | std::ios::binary );
60 else fst.open( ファイル名 , std::ios::in );
61 canRead = true;
62 canWrite = false;
63 canAdd = false;
64 break;
65 case FileMode::Write:
66 if( isBinary ) fst.open( ファイル名 , std::ios::out | std::ios::binary );
67 else fst.open( ファイル名 , std::ios::out );
68 canWrite = true;
69 canRead = false;
70 canAdd = false;
71 break;
72 case FileMode::Add:
73 if( isBinary ) fst.open( ファイル名 , std::ios::out | std::ios::app | std::ios::binary );
74 else fst.open( ファイル名 , std::ios::out | std::ios::app );
75 canWrite = true;
76 canAdd = true;
77 canRead = false;
78 break;
79 }
80
81 this->isBinary = バイナリファイル;
82
83 if ( fst.fail() )
84 {
85 canRead = false;
86 canWrite = false;
87 canAdd = false;
88 }
89
90 return true;
91 }
92
95 static void SetDirectory( const char* ディレクトリ名 )
96 {
97 char full [MAX_PATH+1];
98 char drive[MAX_PATH+1];
99 char dir [MAX_PATH+1];
100 char fname[MAX_PATH+1];
101 char ext [MAX_PATH+1];
102
103 GetModuleFileName( NULL , full , MAX_PATH );
104
105 _splitpath_s( full ,
106 drive , sizeof(drive),
107 dir ,sizeof(dir),
108 fname ,sizeof(fname),
109 ext , sizeof(ext));
110
111 std::string path = drive;
112 path += dir;
113 path += ディレクトリ名;
114
115 SetCurrentDirectory( path.c_str() );
116 }
117
119 bool Close()
120 {
121 fst.close();
122 canRead = false;
123 canWrite = false;
124 canAdd = false;
125 }
126
128 FileMode GetFileMode()
129 {
130 if( this->canAdd ) return FileMode::Add;
131 if( this->canWrite) return FileMode::Write;
132 if( this->canRead ) return FileMode::Read;
133 return FileMode::None;
134 }
135
137 const char* GetFileName()
138 {
139 return this->fileName.c_str();
140 }
141
145 template< class T>
146 bool Read(T &読込先変数 )
147 {
148 if( canRead ) fst << 読込先変数;
149 return canRead;
150 }
151
155 template< class T>
156 bool Write(T &書込元変数)
157 {
158 if( canWrite ) fst >> 書込元変数;
159 return canWrite;
160 }
161
164 template< class T>
165 bool ReadWrite(T &buf )
166 {
167 if( canRead )
168 {
169 fst >> buf;
170 return true;
171 }else if( canWrite ){
172 fst << buf;
173 return true;
174 }
175 return false;
176 }
177
181 bool GetLine(std::string &str)
182 {
183 if( canRead ) getline( fst , str );
184 return canRead;
185 }
186
190 bool GetLineCSV(std::vector<std::string> &strSet)
191 {
192 if( canRead )
193 {
194 std::string str;
195 std::string buf;
196
197 getline( fst , str );
198 std::istringstream iss( str );
199
200 while( getline( iss , buf , ',' ) )
201 {
202 strSet.push_back( buf );
203 }
204 }
205 return canRead;
206 }
207
210 bool CheckEOF()
211 {
212 return ( fst.eof() );
213 }
214
215 };
216 }
DXFW::File::Write
bool Write(T &書込元変数)
Definition: File.h:156
DXFW::File::ReadWrite
bool ReadWrite(T &buf)
Definition: File.h:165
DXFW::FileMode::None
書込時、末尾に追加
DXFW::File::GetLine
bool GetLine(std::string &str)
Definition: File.h:181
DXFW::FileMode::Write
読込のみ
DXFW::File
説明
Definition: File.h:30
DXFW::File::GetFileName
const char * GetFileName()
Definition: File.h:137
DXFW::File::File
File(const char *ファイル名, FileMode 読み書きモード, bool バイナリファイル=false)
ファイルを開く
Definition: File.h:44
DXFW::File::Read
bool Read(T &読込先変数)
Definition: File.h:146
DXFW::FileMode
FileMode
ファイルの読込書込モード
Definition: File.h:9
DXFW::File::SetDirectory
static void SetDirectory(const char *ディレクトリ名)
summary&gt;ファイルを閉じる
Definition: File.h:95
DXFW::File::GetLineCSV
bool GetLineCSV(std::vector< std::string > &strSet)
Definition: File.h:190
DXFW::File::Open
bool Open(const char *ファイル名, FileMode 読み書きモード, bool バイナリファイル=false)
Definition: File.h:51
DXFW::FileMode::Add
書込のみ
DXFW::File::GetFileMode
FileMode GetFileMode()
ファイルモードを取得
Definition: File.h:128