Aide pour fonction lenght

Fermé
valntin7650 - 12 nov. 2013 à 15:18
 valentin7650 - 12 nov. 2013 à 16:31
Bonjour,


Je dois transformer un programme fait en C# en C++ et je suis bloqué a cette endroit:

byte[] text1 = new byte[32] { 0x20, 0x42, 0x6F, 0x6E, 0x6A, 0x6F, 0x75, 0x72, 0x20, 0x61, 0x70, 0x70, 0x75, 0x79, 0x65, 0x72, 0x20, 0x73, 0x75, 0x72, 0x20, 0x75, 0x6E, 0x65, 0x20, 0x74, 0x6F, 0x75, 0x63, 0x68, 0x65, 0x20 };


for (int i = 0; i < text1.Length; i++)
{
outBuffer[departoutbuffer] = text1[i];
departoutbuffer++;
}


C'est ce qui a été fait en C# et je bloque pour le text1.lenght() j'ai essayé ça:

char text1[32]{ 0x20, 0x42, 0x6F, 0x6E, 0x6A, 0x6F, 0x75, 0x72, 0x20, 0x61, 0x70, 0x70, 0x75, 0x79, 0x65, 0x72, 0x20, 0x73, 0x75, 0x72, 0x20, 0x75, 0x6E, 0x65, 0x20, 0x74, 0x6F, 0x75, 0x63, 0x68, 0x65, 0x20 };


for (int i = 0; i < text1.length(); i++)
{
outBuffer[departoutbuffer] = text1[i];
departoutbuffer++;
}

et j'ai comme erreur " error: request for member 'length' in 'text1', which is of non-class type 'char [32]'"


J'ai regardé sur google ça viendrais d'un problème comme quoi char serait pas compris dans la fonction lenght je crois mais je dois mettre quoi à la place?

Merci d'avance.
A voir également:

4 réponses

Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
12 nov. 2013 à 15:49
J'ai lu sur StackOverflow que la ligne suivante devrait te donner le nombre d'éléments d'un tableau:

sizeof(text1)/sizeof(*text1)

En gros, tu divises le nombre de bytes alloués au tableau par le nombre de bytes alloués pour le premier élément du tableau.

Par exemple, dans ton cas tu as un tableau de "char".

sizeof(text1) : 32 bytes, 1 byte par élément "char" de ton tableau.
sizeof(*text1) : 1 byte, le nombre de bytes alloués au premier élément de ton tableau (autrement dit, le nombre de bytes alloués à un élément de type "char").

Si tu divises 32 par 1, tu as 32 éléments dans ton tableau.

Bonne chance!
0
valentin7650
12 nov. 2013 à 16:06
Merci Doctor C de m'avoir répondu mais je t'avoue ne pas avoir tout compris dans ton explication, je dois mettre "sizeof(text1)/sizeof(*text1)" dans la boucle for juste avant le outBuffer[departoutbuffer] = text1[i]; ?? et dans mon cas je dois mettre quoi pour le size? je dois mettre ça : sizeof(32)/sizeof(1) ??
0
Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
Modifié par Doctor C le 12/11/2013 à 16:29
Par souci de lisibilité, tu pourrais faire quelque chose comme ça. Je peux pas le tester mais je suppose que ça marche:

// Obtenir la longueur du tableau
int longueur = sizeof(text1)/sizeof(*text1);

for (int i = 0; i < longueur; i++)
{
outBuffer[departoutbuffer] = text1[i];
departoutbuffer++;
}


Bonne chance!


Echo "Lima Mike Alfa";
0
valentin7650
12 nov. 2013 à 16:31
merci beaucoup je vais tester ça
0