begin process at 2012 05 30 04:59:55
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

utlisation de la classe string


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

utlisation de la classe string

vendredi 31 janvier 2003 à 13:28:08 | utlisation de la classe string

borgeomi

Membre Club
borgeomibonjouuuuuuur !!!!!

nouveau programmeur en C ++ ( mais vieux en cobol )

sous visual C++

création d'une fonction qui enlève les espaces de début et de fin de chaîne et les remplace par des ; ( pour traitement access)

//*******************************************************************************************
// fonction de traitement des espaces en début et en fin de chaine
//*******************************************************************************************


string * fonction_remplace_space ( char *zone_recue , int numero_transmis )
{
cout << "zone_recue ==> "<< zone_recue << endl ;
char *jetonptr_zone_recue;
jetonptr_zone_recue = strtok ( zone_recue , "|");
int numero_de_jeton_zone_recue = 1;
string zone_renvoyee ( ";" );
while ( jetonptr_zone_recue != NULL )
{
cout << "jetonptr_zone_recue ==> " << numero_de_jeton_zone_recue << "==>" << jetonptr_zone_recue << endl ;
jetonptr_zone_recue = strtok ( NULL , "|");
numero_de_jeton_zone_recue = numero_de_jeton_zone_recue + 1;
// iniialisation zone hippodrome
if ( numero_de_jeton_zone_recue = numero_transmis )
{
zone_renvoyee += jetonptr_zone_recue;
zone_renvoyee+= ";" ;
cout << " zone_renvoyee ==> avant " << zone_renvoyee << endl ;
// afficher la chaîne caractère par caractère
int j = 0;
int x = zone_renvoyee.find ( "; ") ;
while ( x < string::npos )
{
zone_renvoyee.replace ( x,2,";" );
x = zone_renvoyee.find ( "; ", x + 1 ) ;
}
cout << " zone_renvoyee ==> apres " << zone_renvoyee << endl ;
int z = zone_renvoyee.rfind ( " ;") ;
while ( z < string::npos )
{
zone_renvoyee.replace ( z,2,";" );
z = zone_renvoyee.rfind ( " ;", z - 1 ) ;
}
cout << " zone_renvoyee ==> apres2 " << zone_renvoyee << endl ;

}
}
// retour zone string

return zone_renvoyee;

}




NB ==> A la compile message ==>

c:\program files\microsoft visual studio\myprojects\projet\projet1.cpp(451) : error C2440: 'return' : cannot convert from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'class std::basic_string<char,stru
ct std::char_traits<char>,class std::allocator<char> > *'
No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
Error executing cl.exe.

projet.exe - 1 error(s), 0 warning(s)


Merci d'avance de vos réponses ( NB je ne retourne pas sur COBOL )
vendredi 31 janvier 2003 à 15:13:48 | Re : utlisation de la classe string

BruNews

Administrateur CodeS-SourceS




-------------------------------
Réponse au message :
-------------------------------

> borgeomibonjouuuuuuur !!!!!
>
> nouveau programmeur en C ++ ( mais vieux en cobol )
>
> sous visual C++
>
> création d'une fonction qui enlève les espaces de début et de fin de chaîne et les remplace par des ; ( pour traitement access)
>
> //*******************************************************************************************
> // fonction de traitement des espaces en début et en fin de chaine
> //*******************************************************************************************
>
>
> string * fonction_remplace_space ( char *zone_recue , int numero_transmis )
> {
> cout << "zone_recue ==> "<< zone_recue << endl ;
> char *jetonptr_zone_recue;
> jetonptr_zone_recue = strtok ( zone_recue , "|");
> int numero_de_jeton_zone_recue = 1;
> string zone_renvoyee ( ";" );
> while ( jetonptr_zone_recue != NULL )
> {
> cout << "jetonptr_zone_recue ==> " << numero_de_jeton_zone_recue << "==>" << jetonptr_zone_recue << endl ;
> jetonptr_zone_recue = strtok ( NULL , "|");
> numero_de_jeton_zone_recue = numero_de_jeton_zone_recue + 1;
> // iniialisation zone hippodrome
> if ( numero_de_jeton_zone_recue = numero_transmis )
> {
> zone_renvoyee += jetonptr_zone_recue;
> zone_renvoyee+= ";" ;
> cout << " zone_renvoyee ==> avant " << zone_renvoyee << endl ;
> // afficher la chaîne caractère par caractère
> int j = 0;
> int x = zone_renvoyee.find ( "; ") ;
> while ( x < string::npos )
> {
> zone_renvoyee.replace ( x,2,";" );
> x = zone_renvoyee.find ( "; ", x + 1 ) ;
> }
> cout << " zone_renvoyee ==> apres " << zone_renvoyee << endl ;
> int z = zone_renvoyee.rfind ( " ;") ;
> while ( z < string::npos )
> {
> zone_renvoyee.replace ( z,2,";" );
> z = zone_renvoyee.rfind ( " ;", z - 1 ) ;
> }
> cout << " zone_renvoyee ==> apres2 " << zone_renvoyee << endl ;
>
> }
> }
> // retour zone string
>
> return zone_renvoyee;
>
> }
>
>
>
>
> NB ==> A la compile message ==>
>
> c:\program files\microsoft visual studio\myprojects\projet\projet1.cpp(451) : error C2440: 'return' : cannot convert from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'class std::basic_string<char,stru
> ct std::char_traits<char>,class std::allocator<char> > *'
> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
> Error executing cl.exe.
>
> projet.exe - 1 error(s), 0 warning(s)
>
>
> Merci d'avance de vos réponses ( NB je ne retourne pas sur COBOL )
Salut,
je sais pas ou est l'erreur mais si tu programmais avant en cobol, fais tes traitements de chaine en C sans std et autre bidule du genre et surtout passe directement en prog grahique. Je le fais et je le publie pour ce soir.
ciao...
vendredi 31 janvier 2003 à 16:11:12 | Re : utlisation de la classe string

Kaid


C'est un problème très facile à résoudre. Modifies le prototype de ta fonction en:

string fonction_remplace_space ( char *zone_recue , int numero_transmis );

Utilises ta fonction comme ceci:
string res=fonction_remplace_space(...);

Le mécanisme utilisé ici est celui du constructeur de copie ou clonage d'objet.

-------------------------------
Réponse au message :
-------------------------------

> borgeomibonjouuuuuuur !!!!!
>
> nouveau programmeur en C ++ ( mais vieux en cobol )
>
> sous visual C++
>
> création d'une fonction qui enlève les espaces de début et de fin de chaîne et les remplace par des ; ( pour traitement access)
>
> //*******************************************************************************************
> // fonction de traitement des espaces en début et en fin de chaine
> //*******************************************************************************************
>
>
> string * fonction_remplace_space ( char *zone_recue , int numero_transmis )
> {
> cout << "zone_recue ==> "<< zone_recue << endl ;
> char *jetonptr_zone_recue;
> jetonptr_zone_recue = strtok ( zone_recue , "|");
> int numero_de_jeton_zone_recue = 1;
> string zone_renvoyee ( ";" );
> while ( jetonptr_zone_recue != NULL )
> {
> cout << "jetonptr_zone_recue ==> " << numero_de_jeton_zone_recue << "==>" << jetonptr_zone_recue << endl ;
> jetonptr_zone_recue = strtok ( NULL , "|");
> numero_de_jeton_zone_recue = numero_de_jeton_zone_recue + 1;
> // iniialisation zone hippodrome
> if ( numero_de_jeton_zone_recue = numero_transmis )
> {
> zone_renvoyee += jetonptr_zone_recue;
> zone_renvoyee+= ";" ;
> cout << " zone_renvoyee ==> avant " << zone_renvoyee << endl ;
> // afficher la chaîne caractère par caractère
> int j = 0;
> int x = zone_renvoyee.find ( "; ") ;
> while ( x < string::npos )
> {
> zone_renvoyee.replace ( x,2,";" );
> x = zone_renvoyee.find ( "; ", x + 1 ) ;
> }
> cout << " zone_renvoyee ==> apres " << zone_renvoyee << endl ;
> int z = zone_renvoyee.rfind ( " ;") ;
> while ( z < string::npos )
> {
> zone_renvoyee.replace ( z,2,";" );
> z = zone_renvoyee.rfind ( " ;", z - 1 ) ;
> }
> cout << " zone_renvoyee ==> apres2 " << zone_renvoyee << endl ;
>
> }
> }
> // retour zone string
>
> return zone_renvoyee;
>
> }
>
>
>
>
> NB ==> A la compile message ==>
>
> c:\program files\microsoft visual studio\myprojects\projet\projet1.cpp(451) : error C2440: 'return' : cannot convert from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'class std::basic_string<char,stru
> ct std::char_traits<char>,class std::allocator<char> > *'
> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
> Error executing cl.exe.
>
> projet.exe - 1 error(s), 0 warning(s)
>
>
> Merci d'avance de vos réponses ( NB je ne retourne pas sur COBOL )
vendredi 31 janvier 2003 à 16:59:35 | Re : utlisation de la classe string

vieuxLion

réponse pour borgeomi
il y a beaucoup d'erreurs dans ton source... c'est normal il faut beaucoup de temps pour apprivoiser tout ça !

je te conseille la solution suivante : utilise les fonctions déja faites : par exemple parmi les deux suivantes :

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string str("aa|bb|cc");
cout << "str=" << str << endl;
//avec la méthode replace de la classe string
int pos=0;
while ( (pos=str.find("|",0)) != string::npos ) //tant qu'on trouve des "|"
str.replace(pos, 1, ";");//le remplace
cout << "apres remplacement : " << str << endl;
string str2("dd|ee|ff");
cout << "str2=" << str2 << endl;
//avec l'algorithme replace:
replace(str2.begin(), str2.end(), '|', ';');//les remplace tous
cout << "apres remplacement : " << str2 << endl;
return 0;
}

encore un mot :
la plus grosse faute de ta solution est de chercher à renvoyer renvoyer un type "string" alors que tu déclares un "string*"
de plus, renvoyer un pointeur sur une variable locale est très grave...

Bon courage


-------------------------------
Réponse au message :
-------------------------------

>
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > borgeomibonjouuuuuuur !!!!!
> >
> > nouveau programmeur en C ++ ( mais vieux en cobol )
> >
> > sous visual C++
> >
> > création d'une fonction qui enlève les espaces de début et de fin de chaîne et les remplace par des ; ( pour traitement access)
> >
> > //*******************************************************************************************
> > // fonction de traitement des espaces en début et en fin de chaine
> > //*******************************************************************************************
> >
> >
> > string * fonction_remplace_space ( char *zone_recue , int numero_transmis )
> > {
> > cout << "zone_recue ==> "<< zone_recue << endl ;
> > char *jetonptr_zone_recue;
> > jetonptr_zone_recue = strtok ( zone_recue , "|");
> > int numero_de_jeton_zone_recue = 1;
> > string zone_renvoyee ( ";" );
> > while ( jetonptr_zone_recue != NULL )
> > {
> > cout << "jetonptr_zone_recue ==> " << numero_de_jeton_zone_recue << "==>" << jetonptr_zone_recue << endl ;
> > jetonptr_zone_recue = strtok ( NULL , "|");
> > numero_de_jeton_zone_recue = numero_de_jeton_zone_recue + 1;
> > // iniialisation zone hippodrome
> > if ( numero_de_jeton_zone_recue = numero_transmis )
> > {
> > zone_renvoyee += jetonptr_zone_recue;
> > zone_renvoyee+= ";" ;
> > cout << " zone_renvoyee ==> avant " << zone_renvoyee << endl ;
> > // afficher la chaîne caractère par caractère
> > int j = 0;
> > int x = zone_renvoyee.find ( "; ") ;
> > while ( x < string::npos )
> > {
> > zone_renvoyee.replace ( x,2,";" );
> > x = zone_renvoyee.find ( "; ", x + 1 ) ;
> > }
> > cout << " zone_renvoyee ==> apres " << zone_renvoyee << endl ;
> > int z = zone_renvoyee.rfind ( " ;") ;
> > while ( z < string::npos )
> > {
> > zone_renvoyee.replace ( z,2,";" );
> > z = zone_renvoyee.rfind ( " ;", z - 1 ) ;
> > }
> > cout << " zone_renvoyee ==> apres2 " << zone_renvoyee << endl ;
> >
> > }
> > }
> > // retour zone string
> >
> > return zone_renvoyee;
> >
> > }
> >
> >
> >
> >
> > NB ==> A la compile message ==>
> >
> > c:\program files\microsoft visual studio\myprojects\projet\projet1.cpp(451) : error C2440: 'return' : cannot convert from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'class std::basic_string<char,stru
> > ct std::char_traits<char>,class std::allocator<char> > *'
> > No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
> > Error executing cl.exe.
> >
> > projet.exe - 1 error(s), 0 warning(s)
> >
> >
> > Merci d'avance de vos réponses ( NB je ne retourne pas sur COBOL )
> Salut,
> je sais pas ou est l'erreur mais si tu programmais avant en cobol, fais tes traitements de chaine en C sans std et autre bidule du genre et surtout passe directement en prog grahique. Je le fais et je le publie pour ce soir.
> ciao...
vendredi 31 janvier 2003 à 17:29:31 | Re : utlisation de la classe string

borgeomi

Membre Club

borgeomibonjouuuuuuur !!!!!


-------------------------------
Réponse au message :
-------------------------------

Merci beaucoup pour votre aide , à votre service si je peux

Cordialement
Michel BORGEOT
e-mail équipe : borgeomi@cic.fr


-------------------------------
Réponse au message :
-------------------------------

>
> C'est un problème très facile à résoudre. Modifies le prototype de ta fonction en:
>
> string fonction_remplace_space ( char *zone_recue , int numero_transmis );
>
> Utilises ta fonction comme ceci:
> string res=fonction_remplace_space(...);
>
> Le mécanisme utilisé ici est celui du constructeur de copie ou clonage d'objet.
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > borgeomibonjouuuuuuur !!!!!
> >
> > nouveau programmeur en C ++ ( mais vieux en cobol )
> >
> > sous visual C++
> >
> > création d'une fonction qui enlève les espaces de début et de fin de chaîne et les remplace par des ; ( pour traitement access)
> >
> > //*******************************************************************************************
> > // fonction de traitement des espaces en début et en fin de chaine
> > //*******************************************************************************************
> >
> >
> > string * fonction_remplace_space ( char *zone_recue , int numero_transmis )
> > {
> > cout << "zone_recue ==> "<< zone_recue << endl ;
> > char *jetonptr_zone_recue;
> > jetonptr_zone_recue = strtok ( zone_recue , "|");
> > int numero_de_jeton_zone_recue = 1;
> > string zone_renvoyee ( ";" );
> > while ( jetonptr_zone_recue != NULL )
> > {
> > cout << "jetonptr_zone_recue ==> " << numero_de_jeton_zone_recue << "==>" << jetonptr_zone_recue << endl ;
> > jetonptr_zone_recue = strtok ( NULL , "|");
> > numero_de_jeton_zone_recue = numero_de_jeton_zone_recue + 1;
> > // iniialisation zone hippodrome
> > if ( numero_de_jeton_zone_recue = numero_transmis )
> > {
> > zone_renvoyee += jetonptr_zone_recue;
> > zone_renvoyee+= ";" ;
> > cout << " zone_renvoyee ==> avant " << zone_renvoyee << endl ;
> > // afficher la chaîne caractère par caractère
> > int j = 0;
> > int x = zone_renvoyee.find ( "; ") ;
> > while ( x < string::npos )
> > {
> > zone_renvoyee.replace ( x,2,";" );
> > x = zone_renvoyee.find ( "; ", x + 1 ) ;
> > }
> > cout << " zone_renvoyee ==> apres " << zone_renvoyee << endl ;
> > int z = zone_renvoyee.rfind ( " ;") ;
> > while ( z < string::npos )
> > {
> > zone_renvoyee.replace ( z,2,";" );
> > z = zone_renvoyee.rfind ( " ;", z - 1 ) ;
> > }
> > cout << " zone_renvoyee ==> apres2 " << zone_renvoyee << endl ;
> >
> > }
> > }
> > // retour zone string
> >
> > return zone_renvoyee;
> >
> > }
> >
> >
> >
> >
> > NB ==> A la compile message ==>
> >
> > c:\program files\microsoft visual studio\myprojects\projet\projet1.cpp(451) : error C2440: 'return' : cannot convert from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'class std::basic_string<char,stru
> > ct std::char_traits<char>,class std::allocator<char> > *'
> > No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
> > Error executing cl.exe.
> >
> > projet.exe - 1 error(s), 0 warning(s)
> >
> >
> > Merci d'avance de vos réponses ( NB je ne retourne pas sur COBOL )
>




Cette discussion est classée dans : fonction, string, class, error, std


Répondre à ce message

Sujets en rapport avec ce message

pb avec string-VC++ [ par didrocks ] Tout content d'essayer la class string, j'ai fait cela:#include string Chaine = "test";et là, le compilateur me donne ce message:C:\ff7tss\Filer.cpp(4 Problème avec les std::string [VC++6.0] [ par D1m3x ] Je suis en train de programmer un petit programme où j'utilise les templates, c'est la première fois que j'en utilise, alors je ne connais pas encore string [ par blueburry ] bonjour,je suis en train de programmer sur visual c++.g un probleme avec les  string, je fais:char nom[26];char sport[26]; string nom = &nom[0];string string et + [ par blueburry ] bonjour,je suis en train de programmer sur visual c++.g un probleme avec les  string, je fais:char nom[26];char sport[26]; string nom = &nom[0];string pb avec les string !!! [ par ElectricalMan ] slt,j'ai qqs "erreurs" à la compilation ! c à s'arracher les cheveux, pouvez vous m'aider svp : #include  #include #include using namespace std;< probleme de map erreur de link [ par hisoka56 ] Bonjour, j'ai un problème de link: Linking... edition.obj : error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in .... Cela String [ par MadMax1024 ] Bonjour ou Rebonjour comme vous le sentezEncore besoin de vos conseils.Dans ma fonction principale (main) je fait appel à une fonction externe qui me Probleme avec pointeur urilisant string [ par Orlyn ] Bonjour, Je viens de finir mon prog de gestion de liste d'attente avec des structures comme ceci : struct Maillon { int numero; Maillon *suivant; error C2678: '!=' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'std::string' (ou il n'existe pas de conversion acceptable) [ par wallie0703 ] Voilà j'ai cette erreur :error C2678: '!=' binaire : aucun opérateur trouvé qui accepte un opérande de partie gauche de type 'std::string' (ou il n'ex symbole externe non résolu [ par informatixa ] Voila mon erreur et, je ces pas d'ou sa peut venir.Login.obj : error LNK2001: symbole externe non résolu "public: __thiscall ConfigFile::ConfigFile(cl


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,827 sec (3)

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