TNB Library
C:
Home
Private
TnbLibrary
TnbInc
TnbMapFile.h
[詳解]
1
#pragma once
11
#include "
TnbMap.h
"
12
#include "
TnbStrVector.h
"
13
#include "
TnbTextFile.h
"
14
15
16
17
//TNB Library
18
namespace
TNB
19
{
20
21
22
38
template
<
typename
KEY,
typename
VAL,
typename
INK=KEY>
39
class
CMapFileT
40
{
41
public
:
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
();
77
CTextFileReader
r;
78
if
( r.
Read
(lpszFileName) )
79
{
80
CConstStrVector
vs;
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
100
protected
:
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
};
loop
#define loop(VAR, CNT)
loop構文.
Definition:
TnbDef.h:343
TnbMap.h
マップ型情報管理関係のヘッダ
TnbStrVector.h
文字列情報配列管理関係のヘッダ
TnbTextFile.h
テキストファイル関係のヘッダ
TNB::CConstStrVectorT
不変的文字列情報配列管理クラス.
Definition:
TnbConstStrVector.h:35
TNB::CConstStrVectorT::GetLineCount
size_t GetLineCount(void) const
[取得] ライン数取得.
Definition:
TnbConstStrVector.h:121
TNB::CConstStrVectorT::GetString
const TYP * GetString(INDEX index) const
[取得] 文字列取得.
Definition:
TnbConstStrVector.h:141
TNB::CMapFileT
マップファイルクラス.
Definition:
TnbMapFile.h:40
TNB::CMapFileT::Save
bool Save(LPCTSTR lpszFileName, const CMapT< KEY, VAL, INK > &map, TCHAR comma=',')
[保存] ファイル保存.
Definition:
TnbMapFile.h:51
TNB::CMapFileT::StringToKey
virtual KEY StringToKey(LPCTSTR lpsz)=0
[変換] 文字列をキー化.
TNB::CMapFileT::ValueToString
virtual CStr ValueToString(const VAL &val)=0
[変換] 値を文字列化.
TNB::CMapFileT::KeyToString
virtual CStr KeyToString(const KEY &key)=0
[変換] キーを文字列化.
TNB::CMapFileT::StringToValue
virtual VAL StringToValue(LPCTSTR lpsz)=0
[変換] 文字列を値化.
TNB::CMapFileT::Load
bool Load(CMapT< KEY, VAL, INK > &_map, LPCTSTR lpszFileName, TCHAR comma=',')
[読込] ファイル読込み.
Definition:
TnbMapFile.h:74
TNB::CMapT
マップ型情報管理テンプレート
Definition:
TnbMap.h:66
TNB::CMapT::At
virtual const CPair & At(INDEX index) const
[取得] 要素の参照取得.
Definition:
TnbMap.h:354
TNB::CMapT::RemoveAll
virtual bool RemoveAll(void)
[削除] すべてのキーと値を削除
Definition:
TnbMap.h:434
TNB::CPairT::first
FIRST first
一つ目の型の値
Definition:
TnbPair.h:44
TNB::CPairT::second
SECOND second
二つ目の型の値
Definition:
TnbPair.h:45
TNB::CStrOperatorT::SeparatePeriod
static CVectorT< CStrT< TYP > > SeparatePeriod(const TYP *lpsz, const TYP *lpszMark, bool isCheckDc=true)
[取得] トークン区切取得
Definition:
TnbStrOperator.h:167
TNB::CStrT< TCHAR >
TNB::CTextFileReader
テキストファイル読込みクラス
Definition:
TnbTextFile.h:288
TNB::CTextFileReader::Read
bool Read(LPCTSTR lpszFileName)
[読込] ファイル読み込み.
Definition:
TnbTextFile.h:331
TNB::CTextFileReader::GetContents
bool GetContents(CConstStrVectorT< char > &_vs) const
[取得] 内容取得.
Definition:
TnbTextFile.h:376
TNB::CTextFileWriter::NewFile
static bool NewFile(LPCTSTR lpszName, const CStrVector &vs, bool isUnicode=false)
[作成] 新規ファイル作成.
Definition:
TnbTextFile.h:191
TNB::CVectorT< CStr >
TNB::CVectorT::GetSize
virtual size_t GetSize(void) const
[取得] サイズ取得
Definition:
TnbVector.h:368
TNB::CVectorT::Add
virtual INDEX Add(const TYP &t)
[追加] 要素一つ追加.
Definition:
TnbVector.h:383
TNB
TNB Library
Definition:
TnbDoxyTitle.txt:2
2023年02月05日(日) 07時21分32秒作成 - TNB Library / 構成:
1.9.3