voglio definire qualcosa comearray di caratteri come un valore in C++ mappa
Map<int, char[5] > myMap;
La dichiarazione di cui sopra è accettato dal compilatore C++ e nessun errore viene generato, ma quando faccio qualcosa di simile
int main()
{
char arr[5] ="sdf";
map <int, char[5]> myMap;
myMap.insert(pair<int, char[5]>(0,arr));
return 0;
}
ottengo l'errore come:
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
E 'importante per me per definire un array di caratteri di dimensioni fisse becau se ottimizza la mia operazione di streaming di rete. C'è un modo per raggiungerlo? Non voglio usare char *
o std::string
.
Hai provato la definizione di un 'struct' che contiene un' char [5] '? – OmnipotentEntity
Perché non 'char *' o meglio ancora 'string'? –
@OnnipotentEntity, sì, ero in grado di farlo creando una struct :) Ma puoi spiegarmi perché ha fatto sì che una struct funzionasse e non il char [5] stesso? –