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 :

Help, déplacement dans un fichier txt // bitfield


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut Help, déplacement dans un fichier txt // bitfield
    Salut,
    j'aimerais savoir si c'est possible d'aller directement à la ligne numéro tant, d'un fichier text apres l'avoir ouvert en lecture.
    Je dois sans cesse aller voir dedans pour récupérer des infos qui se trouvent à des lignes différentes.
    Je voudrais aussi savoir si il est possible d'extraire les bits d'un int et de constuire un autre int à partir de ces bits.
    J'essaie de faire de l'optimisation de mémoire en utilisant un bitfield du type :

    typedef struct {
    unsigned int no:2, n1:2, n2:2, n3:2, n4:2, n5:2, n6:2, n7:2, n8:2, n9:2, n10:2, n11:2, n12:2, n13:2, n14:2, n15:2;
    } bitfield;
    ou je stocke un couple de bit sur chaque nX, j'aimerais savoir si il est possible de créer un entier à partir des bits sur les varaibles n3 à n7 par exemple (sans le calculer avec des puissances de 2, juste par allocation mémoire, pointeurs ou je ne sais trop quoi).
    merci et a +

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    j'aimerais savoir si c'est possible d'aller directement à la ligne numéro tant, d'un fichier text apres l'avoir ouvert en lecture.
    Il me semble que c'est décrit dans la FAQ C++. En gros, il faut utiliser N fois la fonction membre ignore de ton flux de fichier, avec comme paramètre la fin de ligne ('\n').

    Je dois sans cesse aller voir dedans pour récupérer des infos qui se trouvent à des lignes différentes.
    Peut-être que stocker les lignes de ton fichier dans un std::vector<std::string> serait plus simple dans ce cas ?

    J'essaie de faire de l'optimisation de mémoire en utilisant un bitfield du type :

    typedef struct {
    unsigned int no:2, n1:2, n2:2, n3:2, n4:2, n5:2, n6:2, n7:2, n8:2, n9:2, n10:2, n11:2, n12:2, n13:2, n14:2, n15:2;
    } bitfield;
    Avant d'utiliser un truc aussi peu souple, as-tu réellement besoin d'optimiser la mémoire occupée ?

    ou je stocke un couple de bit sur chaque nX, j'aimerais savoir si il est possible de créer un entier à partir des bits sur les varaibles n3 à n7 par exemple (sans le calculer avec des puissances de 2, juste par allocation mémoire, pointeurs ou je ne sais trop quoi).
    Les opérateurs bits à bits sont tes amis. Un masque et un décalage, et l'affaire est reglée. std::bitset peut éventuellement être utile, aussi.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    pour les bitfields je suis obligé vu qu'en fait je doit stocker 4 000 000 de lettres (4 lettres différentes dons je les sotcke sur 2 bits).
    par contre je ne vois vraiment pas comment faire pour créer un entier int à partir de bits.
    en gros je cherche une fonction qui me donne bit par bit un entier int et une autre qui me permettrai de modifier le bit numéro tant de l'entier int.
    Mon entier int étant codé sur 32 bits comment je peux faire pour lui demander la valeur du 12ème bit et modifier la valuer du 14ème vit par exemple.
    en tt cas c'est cool d'avoir répondu rapidement.
    merci!

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    La FAQ C contient quelques réponses à tes questions.

    http://c.developpez.com/faq/c/?page=operateurs

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    oui en fait j'ai réfléchi qq minutes apres avoir poster et ça m'ai venu à l'esprit que je pouvais faire bêtement des opérations booléennes sur des entiers...
    merci pour les réponses !
    en tout cas vous avec fait un super travail avec vos faq et tout le reste.
    merci!

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

Discussions similaires

  1. Ouvrir et écrire dans un fichier .txt en T-SQL
    Par joul's dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 27/10/2008, 21h04
  2. déplacement dans un fichier.txt
    Par yohann007 dans le forum C
    Réponses: 11
    Dernier message: 21/03/2007, 11h06
  3. Date dans un fichier txt
    Par cali1983 dans le forum C++
    Réponses: 6
    Dernier message: 23/05/2005, 17h35
  4. Réponses: 10
    Dernier message: 05/10/2004, 11h28
  5. [langage] tabulation dans un fichier txt
    Par TigreRouge dans le forum Langage
    Réponses: 2
    Dernier message: 16/08/2004, 17h36

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