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 :

Ecriture binaire d'un vector


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut Ecriture binaire d'un vector
    Bonjour,

    Est-il correct de supposer que les données d'un vector sont stockées contiguement et de tenter une écriture binaire de la sorte :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    template<typename T>
    inline
    std::ostream &
    BinaryWriteArray( std::ostream & os, T const * p, size_t lg )
    {
      return os.write( reinterpret_cast<char const *>( p ), lg*sizeof(T) );
    }
     
     
    void f()
    {
      vector<float> vec;
     
      // ...
     
      BinaryWriteArray( file, &vec[0], vec.size() );
    }

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Par défaut
    Oui, c'est garanti par la norme.

    Ce qui n'est pas garanti, par contre, c'est la représentation mémoire des éléments. Elle peut varier d'une plateforme à une autre, d'un compilateur à un autre et même d'une option de compilation à une autre.

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Dans mon cas, peu importe les problèmes d'endianess, si c'est ce à quoi tu fais référence : mon fichier sera lu sur une architecture avec le même endian qu'il a été écrit.

    Par contre :
    d'un compilateur à un autre et même d'une option de compilation à une autre.
    Je ne vois ni de quoi tu veux parler, ni ce que ça peut impliquer ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Hello NiamorH,

    C'est toi qui as les détails du projet, mais d'une manière générale, il faut éviter les suppositions sur les plate-formes et les architectures - demande à tous les développeurs Mac dont les applis n'ont pas supporté le passage à Intel. Et si ton programme est compilé aujourd'hui en 32 bits, peut-être que demain c'est une version 64 bits qui relira les données. Les programmes ont la peau dure, quand leur programmeur est bon...

    Carl

  5. #5
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Par défaut
    Salut, je sais que ton conseil est bon mais ces fameux fichiers que j'écris sont des wavetables (tu dois en savoir un peu sur le sujet, j'ai cru comprendre que tu t'intéressais à la mao). Ce ne sont pas des fichiers utilisateurs, dans le sens où c'est moi même qui les crées et qui les fournis avec mon appli. Si je dois distribuer mon appli sous mac, je recréerai ces wavetables qui seront distribuées en même temps que l'appli mac.

    J'ai regardé par curiosité ( et puis pour visualiser avec gnuplot aussi ) la taille d'une wavetable en fichier texte encodée 96Khz, format float : 3,37Mo contre 816Ko en données brutes.

    Si je dois, entre autres choses, charger plusieurs tables au démarage, les convertir de l'ascii au float, ça se ressent.

    De plus, il s'agit d'un projet perso, avec pour but l'apprentissage de techniques audio.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Effectivement, si ton format de sample est fixé par une norme, cela te facilite le travail. En attendant, si on prend en compte les différences PPC/Intel et 32/64 bits, tu devras quand même générer 3 ensemble de fichiers différents, ce qui est une vraie plaie. Chez Ableton, nous compilons notre produit pour 3 cibles différentes, et que en 32 bits, et ce ne sont pas les problèmes qui manquent.

    Le cas idéal, c'est celui des fichiers générés par l'appli elle-même et destinés à usage interne, comme des fichiers de cache par exemple. Dans tout autre cas, je passerai quand même un peu de temps à réfléchir aux problèmes potentiels, surtout que les solutions sont peu coûteuses à mettre en oeuvre.

    Cheers,

    Carl

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

Discussions similaires

  1. Ecriture Binaire/Problème d'endianess
    Par DarKaa dans le forum C++
    Réponses: 19
    Dernier message: 08/07/2013, 13h18
  2. Ecriture binaire dans un fichier
    Par Nihi777 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/04/2011, 17h52
  3. Ecriture binaire en sortie
    Par mioux dans le forum Coldfusion
    Réponses: 2
    Dernier message: 27/06/2007, 14h20
  4. Ecriture mot binaire
    Par Condor7 dans le forum C
    Réponses: 6
    Dernier message: 16/07/2004, 12h39
  5. [LG]ecriture dans un fichier binaire
    Par jsaviola dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2003, 17h30

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