long strToLong(std::string const &a, int b);
long strToLongDef(std::string const c, int d, int e=0);
double strToDouble(std::string const f);
std::string soundEx(std::string const g);
#endif /* !_HELPERS_H */
helpers.cpp
#include
#include <string>
#include "helpers.h"
using std::cout;
using std::endl;
long strToLong(std::string const &chaine,int base=0) {
char * pEnd;
long result = strtol(chaine.c_str(),&pEnd,base);
return result;
}
long strToLongDef(std::string const & chaine,int defaut,int base=0) {
char * pEnd;
long result = strtol(chaine.c_str(),&pEnd,base);
if(result==0 && chaine!="0")
return defaut;
else
return result;
}
std::string soundEx(std::string const & chaine) {
std::string result="";
unsigned int indexChaine=0;
int indexResult=0;
std::string lettre="";
if(chaine[indexChaine]!='\0') {
if(chaine[indexChaine]>='a' & chaine[indexChaine]<='z') {
result += chaine[indexChaine++]-'a'+'A';
}
else {
result += chaine[indexChaine++];
}
indexResult++;
}
else {
result+='0';
}
for(indexChaine=0;indexChaine<chaine.size()&&result.size()<4;indexChaine++) {
char lettre;
if(chaine[indexChaine]>='a' & chaine[indexChaine]<='z') {
lettre = chaine[indexChaine]-'a'+'A';
}
else {
lettre = chaine[indexChaine];
}
switch(lettre) {
case 'A':
case 'E':
case 'I':
case 'O':
case 'U':
case 'Y':
case 'H':
case 'W':
break;
case 'B':
case 'F':
case 'P':
case 'V':
if(result[indexResult]!='1')
result+="1";
break;
case 'C':
case 'G':
case 'J':
case 'K':
case 'Q':
case 'S':
case 'X':
case 'Z':
if(result[indexResult]!='2')
result+="2";
break;
case 'D':
case 'T':
if(result[indexResult]!='3')
result+="3";
break;
case 'L':
if(result[indexResult]!='4')
result+="4";
break;
case 'M':
case 'N':
if(result[indexResult]!='5')
result+="5";
break;
case 'R':
if(result[indexResult]!='6')
result+="6";
break;
}
}
if(result.size()<=4) {
for(unsigned i=result.size();i<4;i++) {
result+='0';
}
}
return result;
}
main.cpp
#include
#include <string>
#include "helpers.h"
using std::cout;
using std::endl;
using std::string;
cs_killer75
Messages postés14Date d'inscriptionlundi 20 novembre 2006StatutMembreDernière intervention19 décembre 2006 20 nov. 2006 à 17:47
Dsl c'est bon réponse résolu Merci de votre aide,
effectivement le pb ne venai pas de ma compilation mais de mes déclarations qui nétaient pas vraiment identique donc pour les prochains je précise:
Dans mon helpers.h j'avais:
long strToLong(std::string const a, int b=0);
long strToLongDef(std::string const c, int d, int e=0);
double strToDouble(std::string const f);
std::string soundEx(std::string const g);
et dans mon helpers.cpp j'avais:
long strToLong(std::string const& chaine,int base) {
...
}
long strToLongDef(std::string const& chaine,int defaut,int base) {
...
}
double strToDouble(std::string const& chaine ) {
...
}
std::string soundEx(std::string const& chaine) {
...
}
J'ai donc tout simplement réctifié mon helpers.h comme ceci:
long strToLong(std::string const& a, int b=0);
long strToLongDef(std::string const& c, int d, int e=0);
double strToDouble(std::string const& f);
std::string soundEx(std::string const& g);
Donc voila si ca peut évité à d'autres de faires les memes erreurs...
Je tiens aussi à remercier Jean-Marc.Bourguet et Laurent Gomila (d'un autre forum pour leur aide)
mad_love_disease
Messages postés64Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention 1 juillet 20103 20 nov. 2006 à 16:48
Oui, je viens de faire la meme chose,
J'ai reussi a compiler et executer en mettant tout dans le .h, c'est certainement parceque ce sont des fonctions et pas les méthodes d'une classe. (entete.h/code.cpp ne fonctionnerai pas pour des fonctions? J'ai toujours coder en classe alors vala je ne savais pas, A Verifier bien sur.) Bref, il ya quelques erreurs de code mais sinon ca marche.
mad_love_disease
Messages postés64Date d'inscriptionlundi 20 octobre 2003StatutMembreDernière intervention 1 juillet 20103 20 nov. 2006 à 17:01
Yo,
C'est encore moi. Je viens reparer les betises que je viens de dire. En fait fonction ou méthodes cela revient au meme. C'est juste qu'il faut d'abord compiler le code de helper.h pour que le linker trouve tes fonctions. Bref, un bon petit makefile fera l'affaire. En effet, la ligne de compilation g++ main.cpp ne suffit pas.