<meta http-equiv ="Content-Type" content= "text/html; charset=UTF-8">
<meta name="Generator" content="Kate, the KDE Advanced Text Editor">
#ifndef _HELPERS_H
# define _HELPERS_H
#include <string>
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);
#endif /* !_HELPERS_H */
helpers.cpp
<meta http-equiv ="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Kate, the KDE Advanced Text Editor">
#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;
}
Seulement voila, le main.o et le helpers.o compile parfaitement mais c est au moment de faire les links aue ca pose probleme.
Quand je veux faire les liens avec la commande
g++ main.o helpers.o -o lien
j ai les message d erreurs suivant :
main.cpp:(.text+0x8a): référence indéfinie vers «
strToLong(std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int)»
main.cpp:(.text+0x185): référence indéfinie vers «
strToDouble(std::basic_string<char, std::char_traits<char>,
std::allocator<char> >)»
main.cpp:(.text+0x20d): référence indéfinie vers «
soundEx(std::basic_string<char, std::char_traits<char>,
std::allocator<char> >)»
Voila rien que ca
Donc je suis sur que le probleme vient des links, mais j ai beau observe mon code la définition de mes fonctions possède exactement le même prototype que sa déclaration.
En clair, je vois pas d'ou vient le probleme.
Donc voila je suis au point mort et si vous pouviez m aider je vous en serez infiniment reconnaissant .
xantro
Messages postés16Date d'inscriptionvendredi 18 février 2005StatutMembreDernière intervention19 septembre 20072 6 déc. 2005 à 16:24
Voila je vais essayer de remettre a peu pres correctement
helpers.h
<tt><tt>#ifndef _HELPERS_H
# define _HELPERS_H
#include <string>
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);
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;
}