IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

perdu dans les pointeurs


Sujet :

C++

  1. #21
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par atttchoum Voir le message
    Voila qui m'étonne j'ai toujours trouvé que la classe string était franchement radine en fonctions utiles comparé à d'autre librairie (genre QString).
    Il est vrai qu'elle ne fournit pas de possibilité de conversion std::string <--> type primitifs / entiers / réels (ca, c'est du domaine des *stringstream), mais peut être n'a tu pas un aperçu complet de son interface publique à laquelle il ne faut pas oublier de rajouter les fonctions / membres statiques

    On pourrait toujours regretter l'absence d'une fonctionnalité propre à nos besoins ou d'une autre, mais certains (et je ne dis pas que c'est mon cas, hein ) estiment déjà qu'elle fait un peu trop "couteau suisse"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  2. #22
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par atttchoum Voir le message
    justement l'une des fonctionnalités qui manque vraiment à la classe string. Il faut utiliser un textstream si je me souvient bien.
    il faut en fait utiliser stringstream, mais c'est quelque part normal...

    Il n'y a aucune raison de donner la responsabilité d'une conversion chaine de caractères<--> autre chose à... la chaine de caractères.

    Sa responsabilité qui consiste à... gérer correctement les chaines de caractères est déjà suffisamment importante pour que nous ne lui en demandions pas plus

    Citation Envoyé par Pierre Dolez Voir le message
    Bonjour Atttchoum,
    Je vais vous confier un secret. Il y a 10 ans à peu près, quand j'ai acheté mon nouveau compilateur, j'ai regardé les possibilités de la classe string par rapport à ce dont je disposais. En particulier les facilités d'impression et le remplacement éventuel de ma fonction ftoa(). J'ai rien trouvé de particulièrement folichon. Alors, j'ai pris les possibilités qu'offrait le C++, et j'ai laissé les containers où ils étaient. En d'autres termes, j'ai continué à faire du développement, pour la programmation, ma machine et moi, on se comprend.
    Le fait est qu'il y a dix ans, C++ venait à peine d'être normalisé.

    De plus, comme tu parles d'achat d'un compilateur, je pense tout de suite (peut être à tord) que le compilateur que tu as acheté venait de... chez microsoft ou de chez borland qui n'étaient pas vraiment connu à l'époque pour leur respect des normes.



    Depuis, il y a eu:
    1. une autre norme finalisée (en 2003)
    2. un Technical Report (en 2005)
    3. un changement de philosophie chez microsoft comme chez borland(depuis, ils font beaucoup plus attention aux différentes normes)
    4. certains projets fournissant ce que la norme a oublié (boost en tête)
    5. une nouvelle norme en cours de finalisation
    Il faut donc se dire que ce qui était vrai à l'époque ne l'est vraiment plus à l'heure actuelle, et je dirais presque qu'il est du devoir du développeur de réfléchir un minimum à l'opportunité de se "mettre à jour"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #23
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par Pierre Dolez Voir le message
    A propos des "fonction utiles de la classe string", comment fabriquer une chaine qui représente la valeur d'un nombre décimal à afficher?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ostringstream oss;
    oss << monNombre; // On peut ajouter des options de format, de précision...
    string maString = oss.str();
    Si on ne veut pas d'options de formatage, il y a le raccourci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string maString = lexical_cast<string>(monNombre);
    L'avantage étant que ça marche quelque soit le type de monNombre, pour peut qu'on ait prévu un opérateur << associé, ce qui est donc bien plus flexible que les xtoy ou autres options du genre.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #24
    Invité
    Invité(e)
    Par défaut
    Bonjour Koala,
    Il faut donc se dire que ce qui était vrai à l'époque ne l'est vraiment plus à l'heure actuelle, et je dirais presque qu'il est du devoir du développeur de réfléchir un minimum à l'opportunité de se "mettre à jour"
    Ok, je suis d'accord que c'est le devoir du programmeur, celui du développeur est de développer.
    JolyLoic est intervenu entre temps, bonjour.
    Je ne cherche en aucun cas à dire que j'ai raison, je dis seulement comment je fais, pourquoi je fais comme ça, et que pour l'instant, ça m'a réussi pas trop mal.
    Autre façon de considérer les choses, j'ai besoin d'un traducteur, on appelle ça langage en informatique, pour expliquer à ma machine ce que je veux qu'elle fasse, et ca ne va pas plus loin.
    J'ai beaucoup développé avec un langage interprété (Jiscad). Bien que la syntaxe soit très différente, la logique du développement reste la même, quelque soit le langage. C'est la seule chose qui me parait importante, et ce que j'essaye de dire se limite à cela.

  5. #25
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 176
    Points
    1 176
    Par défaut
    mais bon, c'est pas très logique d'abandonner les containers ( vector, list, string ) parce qu'il n'y a pas directement en C++ une fonction StrToFloat.

  6. #26
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Pierre Dolez Voir le message
    Je ne cherche en aucun cas à dire que j'ai raison, je dis seulement comment je fais, pourquoi je fais comme ça, et que pour l'instant, ça m'a réussi pas trop mal.
    Autre façon de considérer les choses, j'ai besoin d'un traducteur, on appelle ça langage en informatique, pour expliquer à ma machine ce que je veux qu'elle fasse, et ca ne va pas plus loin.
    J'ai beaucoup développé avec un langage interprété (Jiscad). Bien que la syntaxe soit très différente, la logique du développement reste la même, quelque soit le langage. C'est la seule chose qui me parait importante, et ce que j'essaye de dire se limite à cela.
    Lorsque tu crées ton algorithme, surtout si tu veux le faire sans imposer de langage particulier, il est effectivement de bon ton de ne pas s'inquiéter de la manière dont ce sera réellement traduit en code.

    Par contre, lorsque tu traduis ton algorithme en code, il est à tout le moins dommage de se "faire du mal pour rien" à coder "à l'ancienne" (comprend: sans profiter de toutes les possibilités du langage) quand on sait que le langage offre des possibilités plus sécurisantes à l'emploi.

    Dans certains cas (comme, pour n'en citer qu'un, la gestion dynamique de la mémoire), il n'y aura d'ailleurs qu'un pas entre "dommage" et "potentiellement dangereux"
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #27
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Citation Envoyé par koala01 Voir le message
    On pourrait toujours regretter l'absence d'une fonctionnalité propre à nos besoins ou d'une autre, mais certains (et je ne dis pas que c'est mon cas, hein ) estiment déjà qu'elle fait un peu trop "couteau suisse"
    string est un affreux monolithe:

    http://www.gotw.ca/gotw/084.htm

  8. #28
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Joel F Voir le message
    string est un affreux monolithe:

    http://www.gotw.ca/gotw/084.htm
    C'est effectivement l'avis de certains... Libre à tout autre de le partager ou non.

    Pour ma part, je ne m'exprime simplement pas (en fait, je garde mon avis pour moi)
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  9. #29
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string maString = lexical_cast<string>(monNombre);
    L'avantage étant que ça marche quelque soit le type de monNombre, pour peut qu'on ait prévu un opérateur << associé, ce qui est donc bien plus flexible que les xtoy ou autres options du genre.
    C'est malheureusement uniquement boost ça (ou peut-être Tr1). . Ce serait trop facile sinon .

    Joel F-> je suis d'accord, mais par-ce que trops de méthodes sont implémenté pour le string. En suite, je ne vois pas trop l'inconvénient de méthodes inlinées qui appelerait un algorithme général... a part pour les mauvaises habitudes, mais je pense que l'objectif de la classe string était de rassurer les "débutants" dans le langage et pour avoir un syntaxe type "full objetct".

    Par -ce que la syntaxe type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::find(MonString.begin(),MonString.end(),'a');
    y'a pas mal de débutants qui lâcheraient direct... :s.

    C'est vrai que d'un point de vue conception, c' est pas l'optimal et ça peut donner de mauvaises habitudes au gens, mais ça ne retire rien à la performance du langage... et du moment que c'est une surcouche d'algorithmes génériques, ça permet de pouvoir utiliser ces algorithmes de façon plus générique
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  10. #30
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par méphistopheles Voir le message
    C'est malheureusement uniquement boost ça (ou peut-être Tr1).
    boost, tr1 et c++0x.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  11. #31
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Faut surveiller va y'avoir une nouvelle implémentation de lexical_cast avec du spirit derrière... ça va être assez énorme. (plus rapide q'itoa par exemple)
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  12. #32
    Membre éprouvé
    Avatar de méphistopheles
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 551
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 551
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par Goten Voir le message
    Faut surveiller va y'avoir une nouvelle implémentation de lexical_cast avec du spirit derrière... ça va être assez énorme.
    Spirit Je sens que les temps de compilation aussi vont être énormes
    Méphistophélès
    Si la solution ne résout pas votre problème, changez le problème...
    Cours et tutoriels C++ - FAQ C++ - Forum C++.

  13. #33
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Non, c'est loin d'être horrible. (juste ce qu'il faut d'inclusion etc, et la V2 de spirit qui a très très largement améliorer les temps de compilation)
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  14. #34
    Membre émérite

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Points : 2 252
    Points
    2 252
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string maString = lexical_cast<string>(monNombre);
    D'ailleurs, sur les compilateurs récents, comme vs2010 ou gcc 4.4, on peut aussi faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <string>
    int i = 2;
    std::string s = std::to_string(i);
    int j = std::stoi(s);

Discussions similaires

  1. Perdu dans les pointeurs
    Par sinfoni dans le forum Débuter
    Réponses: 2
    Dernier message: 26/05/2010, 11h37
  2. Perdu dans les joins
    Par kabkab dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/03/2007, 23h16
  3. perdu dans les fonctions en c++ builder
    Par davidc dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/02/2007, 16h22
  4. [Débutant] Perdu dans les streams
    Par Le Furet dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 04/01/2007, 10h58
  5. Perdue dans les Response.Write...
    Par Tapioca dans le forum ASP
    Réponses: 4
    Dernier message: 11/07/2004, 11h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo