Publié par kod128 le 16/08/2006
Ce code permet de récupérer une partie d'une chaine. Soit a droite, soit a gauche, soit a un autre endroit. str_left et str_right fonctionnent comme les LEFT$ et RIGHT$ de QBASIC pour str_mid, je suis pas sur
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
// str.h #ifndef _STR_H_ #define _STR_H_ // Toutes ces fonctions allouent de la mémoire, ne pas oublier de la liberer // avec delete // Permet de récuperer les n premiers caractères d'une chaine char *str_left(char *chaine, int jusquOu); // Permet de récuperer les n derniers caractères d'une chaine char *str_right(char *chaine, int jusquOu); // Permet de récuperer un certain nombre de caractères à partire d'un certain rang char *str_mid(char *chaine, int aPartirDOu, int jusquOu); #endif // str.c #include <iostream> #include <string.h> char *str_left(char *i_str, int i_len) { if(i_len > strlen(i_str)) // Si la i_len > la longeur de la chaine return NULL; // alors c fini, renvoi NULL char *r_str = new char[i_len]; // Alloue la mémoire nécéssaire pour la nouvelle chaine int pos = 0; // position dans la chaine de départ do { r_str[pos] = i_str[pos]; // Rajoute le pos-ieme élément d'un tableau dans l'autre pos++; // puis incremente pos de 1 } while(pos < i_len); // Tant qu'on a pas la limite. r_str[pos] = 0; // Termine la chaine return r_str; } char *str_right(char *i_str, int i_len) { if(i_len > strlen(i_str)) // Si la i_len > la longeur de la chaine return NULL; // alors c fini, renvoi NULL char *r_str = new char[i_len]; // Alloue la mémoire nécéssaire pour la nouvelle chaine int pos = strlen(i_str) - i_len; // position dans la chaine de départ int npos = 0; // position dans la chaine d'arrivée do { r_str[npos] = i_str[pos]; pos++; npos++; } while(npos < i_len); // Tant qu'on a pas atteint i_len r_str[npos] = 0; return r_str; } char *str_mid(char *i_str, int i_len, int i_len2) { if((i_len + i_len2) > strlen(i_str)) // Si la i_len + i_len2 > la longeur de la chaine return NULL; // alors c fini, renvoi NULL char *buffer1 = new char[i_len + i_len2]; char *buffer2 = new char[i_len]; buffer1 = str_left(i_str, (i_len + i_len2)); buffer2 = str_right(buffer1, i_len2); delete buffer1; return buffer2; }