TNB Library
TnbMapFile.h
[詳解]
1#pragma once
11#include "TnbMap.h"
12#include "TnbStrVector.h"
13#include "TnbTextFile.h"
14
15
16
17//TNB Library
18namespace TNB
19{
20
21
22
38template<typename KEY, typename VAL, typename INK=KEY>
40{
41public:
51 bool Save(LPCTSTR lpszFileName, const CMapT<KEY, VAL, INK>& map, TCHAR comma = ',')
52 {
53 CStr s;
54 CStrVector vs;
55 loop ( i, map )
56 {
57 s = KeyToString(map.At(i).first);
58 s += period;
59 s += ValueToString(map.At(i).second);
60 vs.Add(s);
61 }
62 return CTextFileWriter::NewFile(lpszFileName, vs);
63 }
64
74 bool Load(CMapT<KEY, VAL, INK>& _map, LPCTSTR lpszFileName, TCHAR comma = ',')
75 {
76 _map.RemoveAll();
78 if ( r.Read(lpszFileName) )
79 {
81 if ( r.GetContents(vs) )
82 {
83 CStrVector v;
84 loop ( i, vs.GetLineCount() )
85 {
86 v = CStrOperator::SeparatePeriod(vs.GetString(i), period);
87 if ( v.GetSize() >= 2 )
88 {
89 KEY key = StringToKey(v[0]);
90 VAL val = StringToValue(v[1]);
91 _map[key] = val;
92 }
93 }
94 return true;
95 }
96 }
97 return false;
98 }
99
100protected:
106 virtual CStr KeyToString(const KEY& key) = 0;
107
113 virtual CStr ValueToString(const VAL& val) = 0;
114
120 virtual KEY StringToKey(LPCTSTR lpsz) = 0;
121
127 virtual VAL StringToValue(LPCTSTR lpsz) = 0;
128};
129
130
131
132};
#define loop(VAR, CNT)
loop構文.
Definition: TnbDef.h:343
マップ型情報管理関係のヘッダ
文字列情報配列管理関係のヘッダ
テキストファイル関係のヘッダ
不変的文字列情報配列管理クラス.
size_t GetLineCount(void) const
[取得] ライン数取得.
const TYP * GetString(INDEX index) const
[取得] 文字列取得.
マップファイルクラス.
Definition: TnbMapFile.h:40
bool Save(LPCTSTR lpszFileName, const CMapT< KEY, VAL, INK > &map, TCHAR comma=',')
[保存] ファイル保存.
Definition: TnbMapFile.h:51
virtual KEY StringToKey(LPCTSTR lpsz)=0
[変換] 文字列をキー化.
virtual CStr ValueToString(const VAL &val)=0
[変換] 値を文字列化.
virtual CStr KeyToString(const KEY &key)=0
[変換] キーを文字列化.
virtual VAL StringToValue(LPCTSTR lpsz)=0
[変換] 文字列を値化.
bool Load(CMapT< KEY, VAL, INK > &_map, LPCTSTR lpszFileName, TCHAR comma=',')
[読込] ファイル読込み.
Definition: TnbMapFile.h:74
マップ型情報管理テンプレート
Definition: TnbMap.h:66
virtual const CPair & At(INDEX index) const
[取得] 要素の参照取得.
Definition: TnbMap.h:354
virtual bool RemoveAll(void)
[削除] すべてのキーと値を削除
Definition: TnbMap.h:434
FIRST first
一つ目の型の値
Definition: TnbPair.h:44
SECOND second
二つ目の型の値
Definition: TnbPair.h:45
static CVectorT< CStrT< TYP > > SeparatePeriod(const TYP *lpsz, const TYP *lpszMark, bool isCheckDc=true)
[取得] トークン区切取得
テキストファイル読込みクラス
Definition: TnbTextFile.h:288
bool Read(LPCTSTR lpszFileName)
[読込] ファイル読み込み.
Definition: TnbTextFile.h:331
bool GetContents(CConstStrVectorT< char > &_vs) const
[取得] 内容取得.
Definition: TnbTextFile.h:376
static bool NewFile(LPCTSTR lpszName, const CStrVector &vs, bool isUnicode=false)
[作成] 新規ファイル作成.
Definition: TnbTextFile.h:191
virtual size_t GetSize(void) const
[取得] サイズ取得
Definition: TnbVector.h:368
virtual INDEX Add(const TYP &t)
[追加] 要素一つ追加.
Definition: TnbVector.h:383
TNB Library
Definition: TnbDoxyTitle.txt:2