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

SL & STL C++ Discussion :

Intérêt des i/o stringstream


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut Intérêt des i/o stringstream
    Salut!

    Quel est l'intérêt des "istringstream" et "ostringstream" sur l'utilisation d'un "stringstream" simple.
    En effet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    stringstream s;
    s<<"azerty";
    cout<<s.str();
    string str;
    s>>str;
    cout<<str<<endl;
    permet de faire des entrées/sorties sur le "stringstream"; alors qu'avec les "i/o stringstream" un des deux opérateurs n'est pas défini (logique).
    Est-ce que les "istringstream" et "ostringstream" sont optimisé pour respectivement les lectures et écritures?
    Si oui quel gain de performance peut-on attendre en spécialisant?
    Existe il d'autres différences?

    Merci pour vos éclaircissements.

  2. #2
    Membre chevronné Avatar de Rafy
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    415
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 415
    Par défaut
    Je pense que c'est pour avoir des flux qui permettent soit de lire, soit d'écrire, mais qu'ils ne sont en rien optimisé.
    C'est un peu comme quand on ouvre un fichier, on dit si c'est pour écrire dedans ou alors si c'est pour lire....

  3. #3
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 868
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 868
    Par défaut
    Je pense que c'est toujours plus propre d'utiliser l'objet le plus proche de son besoin. Si ton besoin est le bidirectionnel, utilise stringstream, sinon, utilise celui qui correspond à ton utilité; Ton objet crée est forcément plus léger et même si dans l'absolu ça n'optimise pas le traitement, ça peut optimiser l'espace mémoire occupé.

    Je pense également que ça permet d'éviter les erreurs de manipulation; avec un istringstream ou un ostringstream, tu es sûr que tes operations ne vont que dans le sens que tu as décidé, et donc ça évite des confusions

    C'est tout ce que j'ai à dire à ce sujet. ( Forrest Gump )

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 394
    Par défaut
    utiliser un istringstream (resp. ostringstream) à la place d'un stringstream lorsque l'on souhaite uniquement lire (resp. écrire) dans un flot de caractère permet d'améliorer la
    robustesse du code.
    En se limitant l'accès aux fonctionnalités dont on a uniquement besoin, on évite des erreurs de programmation (faute d'inattention généralement).
    Un cas classique est quand on lit dans un flot pour écrire dans un autre. On peut intervertir par erreur les 2 variables, ce qui donne un programme syntaxiquement correct, mais faux. Lorsqu'il y a beaucoup de lecture/écriture, ces erreurs sont difficile à diagnostiquer, donc c'est un bon réflexe à prendre que de n'ouvrir les flots que dans le mode dont on a besoin.
    En terme de performences, c'est rigoureusement identique, c'est le même code qui est exécuté dans les 2 cas.

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Merci de toutes vos réponses.

    Alors c'est juste une sécurité pour une programmation plus propre, pour éviter les erreurs, l'équivalent des options "r", "w" de "fopen" en C.
    Donc pas le peine d'espérer des gains en performance, si ce n'est des gains minimes en mémoire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Performances : intérêt des vues ?
    Par Mr N. dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/10/2005, 13h42
  2. Intérêt des TActionList
    Par Invité dans le forum C++Builder
    Réponses: 4
    Dernier message: 11/03/2005, 17h31
  3. [glut] de l'intérêt des listes
    Par khayyam90 dans le forum OpenGL
    Réponses: 3
    Dernier message: 26/07/2004, 10h35
  4. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 22h28
  5. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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