begin process at 2012 05 30 05:03:26
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Compression, Split & Cryptage

 > 

validation fonction c++ - relaceAll


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

validation fonction c++ - relaceAll

jeudi 8 juillet 2010 à 16:23:01 | validation fonction c++ - relaceAll

bebellvm

Bonjour,
Je travaille sous datastage un ETL auquel il manque une fonction replaceChaine.

C'est à dire remplacer une chaîne dans une chaîne autant de fois que possible.

L'outil lance cette fonction en parallèles.

Je ne m'y connait pas trop en C++ mais j'ai pondu (;-)) cette fonction qui marche en local sous unix (a.out) mais pas sous datastage. (Mon traitement ne s’arrête pas mais ne travaille pas non plus, genre de wait).

Pouvez-vous me donner votre avis sur cette fonction ? Pas de problème de mémoire ou conflit si lancer en parallèle.


MA fonction :

#include <iostream>

using namespace std;

char* ReplaceChaine(char* chaine, char* masque, char* rempl)
{
string s;
s.assign(chaine);
size_t found;

found = s.find(masque);

while (found!=string::npos)
{
s.replace (found,strlen(masque),rempl);
found=s.find(masque);
}

char* buffer = (char *)malloc (s.length()+1);
strcpy( buffer, s.c_str());

return buffer;

}



NB : je génere un .so que j'utilise par datastage.

Merci pour vos retours
jeudi 8 juillet 2010 à 16:55:01 | Re : validation fonction c++ - relaceAll

CptPingu

Administrateur CodeS-SourceS
- N'utilise pas de "using namespce std", voir: [ Lien ]

Si tu es en C++, inutile de faire cela. Tu mélange du C avec du C++, ce n'est pas très élégant. Pourquoi ne pas utiliser directement des std::string ?

Exemple:
Code C/C++ :
#include <iostream>

std::string& replaceAll(std::string& context,
			const std::string& from,
			const std::string& to)
{
  size_t lookHere = 0;
  size_t foundHere;
  while ((foundHere = context.find(from, lookHere)) != std::string::npos)
  {
    context.replace(foundHere, from.size(), to);
    lookHere = foundHere + to.size();
  }
  return context;
}

int main()
{
  std::string s = "Just un test pour tester un test, pouet.";

  std::cout << s << std::endl;
  replaceAll(s, "test", "toto");
  std::cout << s << std::endl;

  return 0;
}

A noter que la chaîne est remplacé directement. Donc tu peux faire une copie avant si tu le préfères.

Si tu as des contraintes qui t'oblige à utiliser des char*, alors autant le faire en C, ça sera plus pratique. (Tu seras sur de ne pas avoir de souci d'ABI).

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio

Merci d'utiliser Réponse acceptée si un post répond à votre question


Cette discussion est classée dans : fonction, char, masque, found, datastage


Répondre à ce message

Sujets en rapport avec ce message

pb memoire sur fonction recursive [ par MrKribou ] J'ai fait une fonction pour rechercher un repertoire sur le disque qui renvois ensuie le path complet de ce repertoire. Donc cette fonction recherche char -> char* [ par gangsoleil ] Salut,Je souhaite transformer un char en char*, et impossible de trouver une fonction qui fasse ca en C !A priori, aucune fonction de string.h ne peut Créer un masque de saisie en C [ par jimmi ] Bonjour, J'ai cherché partout mais en vainje développe un petit prog. en C qui fonctionne sur des lecteurs code barre.N'etant pas un grand Spécialiste PROBLEME pour retourner un char* a partir d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang PROBLEME pour retourner un char* apres recuperation d'une chaine(sscanf) d'un fichier [ par kobee12 ] Voici ma fonction. Elle prend en argument un caractere. A partir de ce caractere, elle renvoie la chaine qui lui est associe.Par exemple:"fichier_lang Convertir une string en char* [ par dickymoe ] Existe-t-il une fonction qui permet de convertir une string en char* ?ou alors une fonction qui compare deux string sans respecté la casse ???Merci(en fonction strlen [ par ToToL ] Voici mon probleme :je voudrai dans un tableau a deux dimetion savoir combien il reste de place dans les colone donc j'ai pensé a la fonction strlen c fonction qui retourne un char [ par glipper ] Bonjour,Voila, j'ai un probleme avec une fonction qui doit retourner une chaine de caractere ! J'ai compris qu'elle ne pouvait pas renvoyer la chaine, renvoi de type char[] d'une fonction [ par sbouli ] Bonjour,Je suis ULTRA débutant et je cherche à faire une fonction renvoyant du char, voila le principe :char lectureIni (char section[], char clef[], fonction char -> bool [ par destroy2k4 ] salut a tous je suis debutant en programmation et j'ai un petit problemevoila en fait j'ai besoin d'une fonction C qui prend en parametre un tableau d


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 : 2,371 sec (4)

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