Je possede la procedure qui ne marche que pour des lignes lues a parti d'un fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
/* remplace ':' par une espace dans chaque ligne lue */
    for (i = 0; i < lines.size(); i++) {
            int position = lines[i].find(":");
             while (position != string::npos) {
               lines[i].replace(position,1," ");
               position =lines[i].find(":",position+1);
             }
Je voudrais creer une fonction de genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
listedelement *replacechar(strucvar *s, char c, char cr)
qui remplace un caractere par un autre, mais dans des membres d'une structure specifies; au lieu de le faire dans chaque ligne.

J'ai cette structure:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 typedef struct {
 string elem1, elem2;
 } strucvar;
 
main () {
strucvar liste;
je voudrais appeler la fonction replacechar char depuis mon code pour remplacer par exemple l'element 1 (liste.elem1), mais je fais erreur qqpart sans savoir comment trouver la solution. J'appelle la fonction avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
replacechar(liste.elem1,':',' ')
La fonction qui ne marche pas que j'utilise:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
listedelement *replacechar(strucvar *s, char c, char cr) {
     int position = s.find(":");
     while (position != string::npos) {
               s.replace(position,1," ");
               position =s.find(":",position+1);
}
ne se compile pas et l'erreur est find non-member of structure, ou d'autres manipulations me donne "of non-class type"

comment ecrire la fonction?

Merci