ich so etwas wieZeichen-Array als Wert in C++ Karte
Map<int, char[5] > myMap;
Die obige Erklärung von C++ Compiler akzeptiert definieren wollen und kein Fehler wird ausgelöst, aber wenn ich so etwas wie dieses
int main()
{
char arr[5] ="sdf";
map <int, char[5]> myMap;
myMap.insert(pair<int, char[5]>(0,arr));
return 0;
}
ich bekomme Fehler wie:
In file included from /usr/include/c++/4.6/bits/stl_algobase.h:65:0,
from /usr/include/c++/4.6/bits/char_traits.h:41,
from /usr/include/c++/4.6/ios:41,
from /usr/include/c++/4.6/ostream:40,
from /usr/include/c++/4.6/iostream:40,
from charMap.cpp:1:
/usr/include/c++/4.6/bits/stl_pair.h: In constructor ‘std::pair<_T1, _T2>::pair(const _T1&, const _T2&) [with _T1 = int, _T2 = char [5]]’:
charMap.cpp:9:42: instantiated from here
/usr/include/c++/4.6/bits/stl_pair.h:104:31: error: array used as initializer
/usr/include/c++/4.6/bits/stl_pair.h: In constructor ‘std::pair<_T1, _T2>::pair(const std::pair<_U1, _U2>&) [with _U1 = int, _U2 = char [5], _T1 = const int, _T2 = char [5]]’:
charMap.cpp:9:43: instantiated from here
/usr/include/c++/4.6/bits/stl_pair.h:109:39: error: array used as initializer
Es ist wichtig für mich eine feste Größe Zeichen-Array zu definieren becau Es optimiert meinen Netzwerk-Stream-Betrieb. Gibt es einen Weg, es zu erreichen? Ich möchte nicht char *
oder std::string
verwenden.
Haben Sie versucht, die eine 'struct', die eine' char enthält [5] '? – OmnipotentEntity
Warum nicht 'char *' oder besser noch 'string'? –
@OmnipotentEntity, ja, ich konnte es machen, indem ich es zu einem struct mache :) Aber kannst du mir bitte erklären, warum es eine struct Arbeit gemacht hat und nicht der char [5] selbst? –