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 :

Stream sur un chaine de caractère


Sujet :

C#

  1. #1
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut Stream sur un chaine de caractère
    Bonjour,

    j'ai plusieurs fois rencontré des objets dont le rôle est de parser du text et qui se construisent à partir d'une stream. Le problème est que bien souvent, je n'ai pas besoin de collecter le texte depuis un fichier mais depuis une string. Comment alors faire pour qu'un objet stream lise non pas dans un fichier mais dans une variable de type string ? (En passant éventuellement par un objet intermédiaire...)
    Merci d'avance pour votre aide.

    mathmax
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Bonjour,

    MemoryStream permet de créer un stream à partir d'un tableau de byte.

    Encoding.GetBytes(string) permet de créer un tableau de byte à partir d'une string.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    string mastring = "Hello Word";
    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(mastring));
    J'utilise ici l'encoding built-in UTF8 du framework .NET (dans System.Text).

  3. #3
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bah en fait tu peux mettre une string dans une Stream.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Dans quel Stream on peut mettre une string ? ...

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Utilise un StringReader, c'est souvent assez adapté.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  6. #6
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    Dans quel Stream on peut mettre une string ? ...
    Aurais trop vite écrit ?

    Faudra que je revois si c possible.

    Enfin l'idée c'est de mettre la string dans un buffer. StringReader est adapté en effet.

    Mais à moins que je ne dise encore une bétise, StringReader contient une Stream, ou dérive d'une string (je ne suis plus sur et j'ai aps visual studio sous la main)
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  7. #7
    Rédacteur
    Avatar de Greybird
    Inscrit en
    Juin 2002
    Messages
    673
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 673
    Points : 1 271
    Points
    1 271
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Utilise un StringReader, c'est souvent assez adapté.
    StringReader est un TextReader, pas un Stream en l'occurence, je ne sais pas si ça convient...

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par Greybird Voir le message
    StringReader est un TextReader, pas un Stream en l'occurence, je ne sais pas si ça convient...
    En effet, cela ne semble pas adapté...

  9. #9
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Faut vraiment que je regarde de nouveau ces objets, mais je pensais me souvenir que StringReader possèdais une propriété pour avoir accés à un stream.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  10. #10
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Faut vraiment que je regarde de nouveau ces objets, mais je pensais me souvenir que StringReader possèdais une propriété pour avoir accés à un stream.
    Non, pas à ma connaissance. Si il a impérativement besoin d'un Stream, bien évidemment StrignReader ne convient pas. En revanche, ça expose les méthodes pour lire dans une String séquentiellement et de ce point de vue, il me semble assez adapté à l'usage sus décrit. (vu qu'il est assez fréquent d'utiliser une Stream pour justement alimenter un Reader).

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  11. #11
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Je viens de regarder et y'a rien qui retourne un Stream ou permet d'accèder au Stream interne.

  12. #12
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Citation Envoyé par Kaidan Voir le message
    Je viens de regarder et y'a rien qui retourne un Stream ou permet d'accèder au Stream interne.
    Ok je me suis planté

    Vais aller me coucher
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  13. #13
    maa
    maa est déconnecté
    Membre actif
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Points : 288
    Points
    288
    Par défaut
    Oui j'avais essayé de passez par une stringreader mais pas moyen d'obtenir un stream à partir de ça. Donc en fait la méthode de Kaidan de passez par une MemoryStream et d'utiliser la méthode GetBytes() semble être la meilleure/la seule solution ? N'est-ce pas ?
    ****************************************

    - I don’t write plumbing code anymore
    - I use PostSharp
    - And you?


    ****************************************

  14. #14
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par maa Voir le message
    Oui j'avais essayé de passez par une stringreader mais pas moyen d'obtenir un stream à partir de ça. Donc en fait la méthode de Kaidan de passez par une MemoryStream et d'utiliser la méthode GetBytes() semble être la meilleure/la seule solution ? N'est-ce pas ?
    Oui, c'est la mieux et celle à utiliser, tout simplement

  15. #15
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Je viens de vaguement me souvenir d'une chose que j'avais vu sur un poste.

    Ne peux t'on pas créer un filestream en lui fournissant un string sans pour autant créer le fichier sur le pc ?
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  16. #16
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 277
    Points : 1 521
    Points
    1 521
    Par défaut
    Dans tous les constructeurs, le paramètre de type string semble être le path vers un fichier.

  17. #17
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Citation Envoyé par ced600 Voir le message
    Je viens de vaguement me souvenir d'une chose que j'avais vu sur un poste.

    Ne peux t'on pas créer un filestream en lui fournissant un string sans pour autant créer le fichier sur le pc ?
    Non, pour cela il y a, comme déjà dit, les MemoryStream. un FileStream sert justement à écrire dans un fichier. Il y a tout une panoplie de Stream suivant l'endroit où on veux cracher/lire ses octets.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  18. #18
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Bon dans le namespace System.Text, il ya ASCIIEncoding.
    Il ya la méthode GetBytes qui prend en paramètre un string et un tableau de bytes entre autre.
    Elle te convertis la string en tableau de bytes.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

Discussions similaires

  1. [CR 10] Traitement sur les chaines de caractères
    Par sylviefrfr dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 11/09/2006, 09h16
  2. question sur les chaines de caractères
    Par pierrOPSG dans le forum C
    Réponses: 5
    Dernier message: 13/04/2006, 18h55
  3. Dégradé sur une chaine de caractères avec 3 a 4 couleurs
    Par avogadro dans le forum Composants VCL
    Réponses: 6
    Dernier message: 31/03/2006, 13h21
  4. xsl : test sur les chaine de caractère
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 13/07/2005, 15h43
  5. Réponses: 7
    Dernier message: 17/07/2003, 11h00

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