Comment remplacer les "\" dans un "string"

Le_duc26 Messages postés 9 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 14 avril 2008 - 14 avril 2008 à 10:08
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014 - 16 avril 2008 à 14:05
Bonjours,
Je développe une petite application de gestion d’employés avec une base de données MySQL. Pour enregistrer l’image de l’employé j’enregistre l’adresse de l’image. Le souci est que si je veux enregistré la photo dans la BDD je dois changer les ‘/’ (slash) par des contres slash ‘\’. Pour le moment l’adresse de l’image est fixe alors je procède de cette façon :

Adresse de mon Image:C:\Image\G12.JPG

String CheminImage;
CheminImage= ECheminImage->Text.c_str();
                        CheminImage.Delete(3,1);     // delete 1 caractere a la position 3
                        CheminImage.Insert("/",3);   // insert un "/" en position 3
 
                        CheminImage.Delete(9,1);     // delete 1 caractere a la position 3
                        CheminImage.Insert("/",9);   // insert un "/" en position 3
 


J’aimerai que mon programme soit plus souple et qu’il s’adapte si je change l’adresse de l’image. J’aimerai savoir comment je peux scanner ma variable et changé les slashs dans une boucle.
Merci

4 réponses

cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
14 avril 2008 à 12:25
salut,
c'est simple en C vite fait

char * convertSlash(char *source)
{
  short taille = strlen(source);
  char *s = source;
  while (taille--)
  {
    if (*s == '/')*s='\\';
    s++;
  }
  return source;
}

pour info il existe pleins de fonctions de traitements de chaines, en plus si je me rappel bien en string tu as aussi!!

ciao
0
Le_duc26 Messages postés 9 Date d'inscription lundi 22 mai 2006 Statut Membre Dernière intervention 14 avril 2008
14 avril 2008 à 13:37
tu connais des fonctions en C++ pour faire la meme chose ? je test avec SubString() mais je pense pas etre sur le bonne piste.
0
cs_omnia Messages postés 240 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 22 mars 2009
14 avril 2008 à 14:40
string::size_type i = 0;
while ((i = str.find('/', i)) != (string::size_type)(-1))
str.replace(i++, 1, _T("\" ));

en C++
0
Moomoon07 Messages postés 223 Date d'inscription mercredi 31 mai 2006 Statut Membre Dernière intervention 5 mai 2014
16 avril 2008 à 14:05
/***********************************************************************************************/
/* Fonction (récursive) qui supprime les caractères 'Car' contenus dans la chaine 'Chaine' */
/***********************************************************************************************/
void SupprimerCar(char Chaine[], char Car)
{
 int i = 0;
 int IndicePremierCar = -1;
 while((i < (int)strlen(Chaine)) && (IndicePremierCar == -1))
 {
  if(Chaine[i] == Car) IndicePremierCar = i;
  i++;
 }
 if(IndicePremierCar > -1)
 {
  for(i = IndicePremierCar ; i < ((int)strlen(Chaine) - 1); i++)
   Chaine[i] = Chaine[i + 1];
  Chaine[(int)strlen(Chaine) - 1] = '\0';
  SupprimerCar(Chaine, Car);
 }
}
0