C++ STRING

Résolu/Fermé
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 - 13 févr. 2010 à 21:19
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 15 févr. 2010 à 02:26
Bonjour,
JE VOUDRAIS SAVOIR COMMENT ON PEUT UTILISER UNE VARIABLE DE TYPE STRING DANS UNE CLASS .HPP
EN C++

String b ; ca marche pas

4 réponses

adamodin Messages postés 78 Date d'inscription lundi 10 août 2009 Statut Membre Dernière intervention 15 décembre 2010 13
14 févr. 2010 à 13:19
mais string est un bibliothèque .
0
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9
14 févr. 2010 à 23:01
est ce que ca veut dire qu'il faut utiliser la stl en faite je veux faire une classe ou je vais faire un objet personne donc je doit avoir un constructeur

dans mon constructeur il ya une fonction qui renvoit le nom de la personne

dans mon hpp

string getNom();// ca marche pas

je voudrais renvoyer le nom de la personne sans utiliser la stl (Standard Template Library)
merci pour laide
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
14 févr. 2010 à 23:09
bonjour,
dans Standard Template Library il y a "template". Ce qui veut dire modèle. String n'est pas un modèle. (les modèles c'est comme avec vector<monType> par exemple)

si ça ne fonctionne pas c'est que tu n'as pas mis include <string> dans ton fichier, ou alors c'est que l'erreur est ailleurs.

De plus, pourquoi vouloir faire un programme sans utiliser la STL d'ailleurs ? elle fait partie intégrante du langage C++, c'est dans le standard du langage.
0
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9
14 févr. 2010 à 23:21
en fait le travail consiste a ne pas utiliser le stl c pour cela que je suis pas sur si je dois l<inclure je sais que ca marche si je linclu mais si j<inclue est ce que je suis entrain d'utiliser la stl le travail consiste a travailler juste sur le pointeur je suis dans le doute de lutiliser ou non. dapres toi est ce que si je linclu jutilise la stl

merci
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661 > k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014
14 févr. 2010 à 23:22
EDIT
0
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9 > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
14 févr. 2010 à 23:24
ok merci
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
14 févr. 2010 à 23:24
Pardon ! Je me suis trompé !

apparemment, la bibliothèque <string> du C++ fait effectivement partie de la STL.

http://www.cs.purdue.edu/homes/grr/cs422/lab3/stl_strings.html par ex. et bien d'autre (il suffisait de taper "STL string" dans google pour en être sûr d'ailleurs... )
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
14 févr. 2010 à 23:26
comme les string te sont interdites, il te faut passer par des char [] (ou des char * et utiliser malloc... en gros tu vas faire du C, pas vraiment du C++)
0
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9 > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
14 févr. 2010 à 23:30
c'est ca que jai pense mais lorsque je fait voici dans mon .hpp

void setNom(char nom[]); // ca marche
char []getNom(); // ca marche pas

en fait ca marche pas lorsque je veux qui me renvoie un tableau de char

merci pour laide
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
14 févr. 2010 à 23:34
pour renvoyer un tableau avec une fonction, il faut renvoyer un pointeur (un tableau, en fait c'est presque comme un pointeur en C / C++)

donc un char *

et ta chaine devra être crée correctement avec new , ou alors tu ne pourras pas la retourner correctement.
0
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9
14 févr. 2010 à 23:35
ok ok ok merci je voie maintenant
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661 > k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014
14 févr. 2010 à 23:45
Exemple :

le plus simple est encore de passer ta chaine que tu veux obtenir en paramètre
#include <iostream>
#include <cstring>

using namespace std;

void direSalut(char *);

int main(int argc, char *argv[]) {
    char chaine[20];
    
    direSalut(chaine);

    cout<< chaine;
    
    system("Pause");
}

void direSalut(char * argument) {
    strcpy(argument, "Salut\n");
}



Ceci est la version avec pointeur en retour et new[] :
#include <iostream>
#include <cstring>

using namespace std;

char * direSalut(void);

int main(int argc, char *argv[]) {
    char * chaine;
    
    chaine = direSalut();

    cout<< chaine;

    delete[] chaine; // important à faire si tu as utilisé new[] !
    system("Pause");
}

char * direSalut(void) {
    char * p = new char[20];
    strcpy(p, "Salut !\n");
    return p;
}
0
k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014 9 > Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013
14 févr. 2010 à 23:58
oui mais on se sert du stl a cause du #include <cstring> je pas le droit dutiliser ca on a juste le droit a #include <iostream>
0
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661 > k-23 Messages postés 252 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 25 novembre 2014
15 févr. 2010 à 02:26
non. include <cstring> c'est pour inclure les fonctions du C concernant les chaines (comme strcpy). ce n'est pas la STL.
0