begin process at 2012 05 27 15:19:43
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > CSTRINGCONVERT (MANIPULATION DES CSTRING)

CSTRINGCONVERT (MANIPULATION DES CSTRING)


 Information sur la source

Note :
Aucune note
Catégorie :Chaîne de caractères Classé sous :cstring, conversion, balise Niveau :Débutant Date de création :22/08/2007 Vu / téléchargé :6 568 / 101

Auteur : kts_system

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 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.Conv ertToString(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(st rTest1);

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

Source

  • //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);
//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)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture ALGO DE PATHFINDING AVEC PETIT JEU
Source avec Zip Source avec une capture BUVETTE POURSUITE VIRTUELLE
Source avec Zip Source avec une capture LECTEUR MP3 EN DOC/VUE
Source avec Zip EXPLORATEUR DE FICHIER
Source avec Zip TREEREG (GESTION DU REGISTRE COMME UN ARBRE)

 Sources de la même categorie

CALCUL DE CLEF RIB par Renfield
Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip LES STRING EN C, AFFECTATION, CONCATÉNATION, SPLIT, ... par appranting
Source avec Zip [C] WD_STRING V1.9 par cyberripper
Source avec Zip LIBRAIRIE LANGUAGES par astro53

 Sources en rapport avec celle ci

CONVERSION DE FICHIER EN FICHIER BMP par seoseo
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10
DATETIMECONVERTER par guill76
Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip COMPRESSER SES SAUVEGARDES SMSBACKUPRESTORE (ANDROID) EN C A... par ThalLab

Commentaires et avis

Commentaire de Lucky92 le 23/08/2007 22:25:36

Bonsoir,

J'ai quelques remarques :
- tu DOIS te débarrasser de tes memory leaks ! Il y a deux voies : soit le client est en charge de l'allocation et de la désallocation, soit c'est ta classe qui s'en charge.
- la classe CString (MFC) définit l'opérateur de conversion en LPCSTR (alias const char*), ce qui me fait penser que ta méthode ConvertToChar() est un peu lourde, voire inutile.
- je ne connais pas le contexte de ton travail, mais la conversion en BYTE (unsigned char) me semble moins intéressante qu'une compatibilité avec l'unicode (wchar_t).
- je pense que tu gagnerais en portabilité si tu utilisais les classes std::string, std::ostringstream et std::istringstream.

Commentaire de LeFauve42 le 27/08/2007 14:02:59

Salut,

Quelques remarques sur le nommage de tes methodes:
- ExtractInChaine: Soit tu prends des noms en Francais, soit en Anglais, mais melanger les deux, ce n'est pas tres pratique
- ConvertToChar: Ca convertie en char*, pas en char... Tu devrais trouver un autre nom, encore que comme dit Lucky92, ce n'est pas la fonction la plus utile.

Vu le titre du post, je m'attendais a des conversions vraiment utiles, comme les bstr ou autres unicode et trucs bizares.

Enfin, l'avantage de ce genre de classes, c'est que tu peux toujours rajouter de nouvelles fonctionnalitees :o)

Eric

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

conversion d'int en CString sous VC++ [ par Orkblutt ] le tire est explicite...merci d'avance!! Conversion CString en int [ par picinounours51 ] Bonjour Voici mon problème mon compilateur me dit qu'il n'arrive pas à compilé il demande la conversion d'un CString en int comment faire ?Merci d'ava Conversion de CString vers Int [ par DARKSIDIOUS ] Bonjour à tous,J'ai un problème qui me turlupine depuis quelques heures : comment fait-on pour convertir des données d'une variables de type CString v conversion cstring en char [ par champista ] Bonsoir,j'ai une petite question assez urgente. Je programme et j'ai un pb au niveau des conversion de type : cstring en char.Pouvez vous me dire comm conversion vers une CString [ par lamoueste ] bonjour a tous j'ai un souci je voudrais convertir un tableau de byte en CString mais ca marche pas meme si ca a le merite de compiler... voila mon co PB Conversion de CString vers LPSTR [ par ben1964 ] j'ai une fonct. API Windows qui necessite un arg. de type LPSTR et la variable que j'ai est de type CString J'ai essayerça :LPSTR a;CString ma_variab PB Conversion de CString vers LPSTR [ par ben1964 ] j'ai une fonct. API Windows qui necessite un arg. de type LPSTR et la variable que j'ai est de type CString J'ai essayerça :LPSTR a;CString ma_variabl conversion d'un long en CString [ par ykavok ] bonjour.si quelqu'un pouvait m'aider ca serai vraiment super sympas .... ca fais deux jours que je me prend la tete pour convertir un long en cstring. Conversion wchar_t à CString [ par youssef_sympas ] Salut tout le monde,Je veux convertir un tableau wchar_t à CString.Comment peut-je faire?? conversion CString en char* ???? [ par gege1024 ] je fais ca: (avec fichier0-&gt;CString)char* cfichier = LPSTR(fichier0);mais marche pas, comment faire ???


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales