Bonjour,
je voudrais porter ou tout du moins garder la classe .NET utilisée pour gérér les requetes HTTP.
Dans cett classe j'aimerais creer l'equivalent d'un WebHeaderCollection qui est en fait l'equivalent d'une multimap<string, string> et qui en plus empeche de rentrer les clés suivantes :
_T("Accept"),
_T("Connection"),
_T("Content-Length"),
_T("Content-Type"),
_T("Expect"),
_T("Date"),
_T("Host"),
_T("If-Modified-Since"),
_T("Range"),
_T("Referer"),
_T("Transfer-Encoding"),
_T("User-Agent"),
J'avais donc commencé a définir la classe suivante (j'ai pris une map dans un premier temp, on verra plus tard pour le multimap):
Mon souci est de pouvoir parcourir cette map.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 class WebHeaderCollection { private: std::map<tstring, tstring> m_KeyValueMap; public: void Add(tstring sHeader, tstring sValue); int GetCount(); }; void WebHeaderCollection::Add(tstring sHeader, tstring sValue) { static const TCHAR* szSysHeaders[] = { _T("Accept"), _T("Connection"), _T("Content-Length"), _T("Content-Type"), _T("Expect"), _T("Date"), _T("Host"), _T("If-Modified-Since"), _T("Range"), _T("Referer"), _T("Transfer-Encoding"), _T("User-Agent"), }; // the code below could be commented for maximum performance for (int i = 0; i < _countof( szSysHeaders ); i++) { if (_tcscmp(sHeader.c_str(), szSysHeaders[i]) == 0) return; } //[] m_KeyValueMap[ sHeader ] = sValue; } int WebHeaderCollection::GetCount() { return m_KeyValueMap.size(); }
Peut etre aurais-je du hériter directment de std::map mais il semble que ce n'est pas recommandé de le faire.
J'ai besoin de vos avis...
Partager