Cstringconvert (manipulation des cstring)

Description

Ca sert a faire des manips sur les CString (conversion, extraction entre des bornes...)
Dsl pour l'utilisation "abusive" de vector mais c'est l'habitude et j'ai pas le temps de faire mieux pour l'instant

A oui un petit exemple pour l'utiliser (j'ai pas geré la mémoire ds cet ex) :

CString str;
CStringConv strConv(&str);

//
CString strTest = strConv.ConvertToString(1223.2563, 2);
strTest = strConv.ConvertToString(12369);
//

//
str = "yoann; test; samsung;ogg;";
std::vector<CString> vectString = strConv.ExtractInChaine(";");
for (int i = 0; i <vectString.size();i++)
AfxMessageBox(vectString[i]);
//

//
char * psztest = strConv.ConvertToChar();
BYTE * pByteList = strConv.ConvertToByteList();
//

//
str = "test de extract Num du int 123, et de float 9856.3219 -999.678";
std::vector<float> vectFloat = strConv.ExtractNumber();
for (int j = 0; j <vectFloat.size();j++)
AfxMessageBox(strConv.ConvertToString(vectFloat[j],4));
//

//
str = "[T] Tag 1 /T On ne doit pas voir [T] Tag 2 /T Non Plus [T] Tag 3 /T";
std::vector<CString> vectStr = strConv.ExtractBetweenTag("[T] ","/T");
for (int k = 0; k <vectFloat.size();k++)
AfxMessageBox(vectStr[k]);
//


//
BYTE * byte = new BYTE[12];
char * carac = new char[12];
for (int l = 0; l< 12; l++)
carac[l] = byte[l] = 'p';

CString strTest1 = strConv.ConvertToString(byte,12);
AfxMessageBox(strTest1);

strTest1 = strConv.ConvertToString(carac,12);
AfxMessageBox(strTest1);
//

Source / Exemple :


//Permet de definir sur quelle CString on veut travailler
void SetCStringVar(CString * pstrString);

//Retourne un CString avec la valeur numerique du param
//Le nbr de points apres la virgule est configurable
//Fct statique car elle n'utilisent pas le ptr membre m_pstrString
static CString ConvertToString(int iNum);
static CString ConvertToString(float fNum, int nbCAV = 0);

//Retourne un CString Image du tableau en param
static CString ConvertToString(BYTE * pTabByte, int iTabSize);
static CString ConvertToString(char * pTabChar, int iCharSize);

//Retourne un char * de la chaine en cour
char * ConvertToChar();

//Retourne un champ de bits correspondant a la chaine en cour
BYTE * ConvertToByteList();

//Retourne les caracs entre les indexs start et stop de la chaine en cour
CString ExtractByIndex(int iStart, int iStop);

//Cherche dans la chaine en cour la chaine en param,
//Retourne un tableau d'entier contenant l'index du 1er carac de
//chaque occurence de la chaine en param;
std::vector<int> FindChainePos(CString strChaine);

//Cherche dans la chaine en cour toutes les valeurs entre deux 
//occurence de strSeparateur, retourne un tableau des chaine trouver
//le tableau est vide si rien n'a été trouvé
std::vector<CString> ExtractInChaine(CString strSeparateur);

//Extrait une ou plusieurs chaines entre 2 balises dans la chaine en cour
//Retourne un tableau de CString si il y a plusieurs couple de balises
//chaque case du tableau contient la chaine entre les balises
std::vector<CString> ExtractBetweenTag(CString strOpenTag, CString strCloseTag);

//Cherche dans la chaine en cour tous les chiffres (réél ou entier)
//compris dans les bornes en params
//Retourne un tableau de float remplit avec tous les chiffres trouvés
std::vector<float> ExtractNumber(float fMinVal = -99999999, float fMaxVal = 99999999);

//Réécriture des fct standard mais ou on peut directement
//utiliser des types float ou int sans convertions
void SetIntAt(int iIndex, int iVal);
void SetFloatAt(int iIndex, float fVal, int nbCAV = 1);

Conclusion :


Ya des memory leak dans certaines fonctions (mais c'est marqué ds le code)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.