2010-06-14 2 views
4

J'essaie de déclarer une taille d'un tableau char et j'ai besoin d'utiliser la valeur de la variable déclarée comme taille_t pour déclarer cette taille. Y at-il de toute façon que je peux transformer la variable size_t en int pour que je puisse faire ça?lancer size_t à int pour déclarer la taille du tableau char

+1

'size_t' _is_ le type utilisé pour la taille du tableau. Non seulement vous n'avez pas besoin d'un cast, mais si vous en faites un, le résultat sera simplement implicitement converti en 'size_t'. –

Répondre

7

size_t est un type entier et aucune conversion n'est nécessaire.

En C++, si vous voulez avoir un dynamique de taille tableau, vous devez utiliser allocation dynamique à l'aide new. Autrement dit, vous ne pouvez pas utiliser:

std::size_t sz = 42; 
char carray[sz]; 

Vous devez utiliser ce qui suit à la place:

std::size_t sz = 42; 
char* carray = new char[sz]; 
// ... and later, when you are done with the array... 
delete[] carray; 

ou, de préférence, vous pouvez utiliser un std::vector (std::vector gère la mémoire pour vous afin que vous don « t besoin de se rappeler de le supprimer explicitement et vous n'avez pas à vous soucier beaucoup des problèmes de propriété qui viennent avec l'allocation dynamique manuelle):

std::size_t sz = 42; 
std::vector<char> cvector(sz); 
+1

Détail mineur, mais ne devriez-vous pas utiliser delete [] dans votre exemple, lorsque vous utilisez new []? – Jacob

+3

@Jacob: Oui, et c'est une autre excellente raison d'utiliser 'std :: vector'. :-) (Fixe et merci) –