Zeichen-Array als einen Wert in C++ anzeigen

Möchte ich definieren, so etwas wie

Map<int, char[5] > myMap;

Dem obigen Erklärung angenommen, die von der c++ - compiler und kein Fehler ausgegeben, aber wenn ich so etwas tun

int main()
{
    char arr[5] ="sdf";
    map <int, char[5]> myMap;
    myMap.insert(pair<int, char[5]>(0,arr));
    return 0;
}

Bekomme ich 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

Ist es für mich wichtig, zu definieren, eine Feste Größe Zeichen-array, weil es optimiert die mein-Netzwerk-stream-Betrieb. Gibt es eine Möglichkeit, es zu erreichen? Ich will nicht zu verwenden char * oder std::string.

Sie haben versucht, die Definition einer struct enthält eine char[5]?
Warum nicht char * oder noch besser string?
ja, ich war in der Lage, es zu tun, indem Sie ein struct 🙂 Aber kannst du bitte erklären Sie mir, warum machen Sie es eine Struktur, die Arbeit und nicht der char[5] selbst ?
Sehen Sie, diese Frage Warum deklarieren Sie ein struct, das enthält nur ein array
Antworten sind toll, aber niemand diskutiert, warum so ein Konstrukt ist nicht möglich in c++, oder wenn c++ - compiler akzeptiert die Erklärung, wie es zu benutzen? Nur von einem theoretischen Standpunkt aus.

InformationsquelleAutor Master Oogway | 2012-07-16

Schreibe einen Kommentar