2 votes

Effacer le contenu d'un tableau de caractères fixes en C++ après l'attribution d'une valeur

Bonjour, j'ai le code suivant :

char msg[10000];
string mystr = "hello";
// stores mystr into msg
copy(mystr.begin(), mystr.end(), msg);

Après la copie du code, je veux effacer le contenu du char msg[10000]. Comment faire ?

6voto

Johannes Schaub - litb Points 256113

Utilisation d'installations modernes

std::array<char, 10000> msg;

string mystr = "hello";
// stores mystr into msg
copy(mystr.begin(), mystr.end(), msg.begin());

// then clear it again
msg = {{}};

Je ne sais pas trop pourquoi vous voulez d'abord le copier et ensuite l'effacer, mais c'est ainsi que vous pouvez le faire. Sans les initialisateurs généralisés du C++11, vous pouvez dire

msg = std::array<char, 10000>();

Bien entendu, vous pouvez toujours utiliser boost::array au lieu de std::array , cela fonctionne de la même manière.

2voto

Joachim Pileborg Points 121221

Si vous souhaitez vraiment effacer l'ensemble du tableau, l'utilisation de memset comme le suggère Andrew. Cependant, si vous voulez simplement vous assurer que la longueur de la chaîne est nulle, il suffit d'effacer la première entrée :

msg[0] = '\0';

1voto

Andrew Points 14301
char msg[10000];
memset(msg, 0, 10000);

si vous connaissez la taille des données remplies :

memset(msg, 0, SizeOfFilledData);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X