IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
logo
Sommaire > Utilitaires > Classes pré-fabriquées
        Tableau à 2 dimensions
        Découper une chaîne
        Suppression de la ligne i d'un fichier
         Classe à valeurs bornées
         Formatage des données

rechercher
precedent    sommaire    suivant    telechargermiroir


Auteur : r0d
Version : 13/08/2008
Page de l'auteur
Téléchargez le zip
Tableau à 2 dimensions
Cette classe permet d'émuler un tableaux de n lignes * m colonnes en utilisant le fait qu'accéder à l'élément situé ligne i, colone j revient à accéder à l'élément numéro i*n+j d'un tableau à une dimension de longeur m*n.


Auteur : Luc Hermitte
Version : 13/08/2008
Découper une chaîne
Voici une fonction permettant de découper une chaîne selon un motif:

template <typename OO, typename Sep> 
OO split(std::string const& source, OO dest, Sep sep)
{
    std::string::size_type p = 0;
    while (p != std::string::npos)
    {
        const std::string::size_type p2 = source.find_first_of(sep, p);
        if (p2 != std::string::npos) {
            *dest++ = source.substr(p, p2-p);
            p = p2 + 1;
        } else {
            *dest++ = source.substr(p);
            p = p2;
        }
    }
    return dest;
}

Auteur : Davidbrcz
Version : 13/08/2008
Suppression de la ligne i d'un fichier
Cette fonction vous permet de supprimer la ligne i d'une fichier quelconque.

void eraseLine(const char* pathFile,unsigned int lineToErase)
{

    std::string buffer = ""; 
    std::ifstream input(pathFile);


    //si le fichier est bien ouvert
    if (input) 
    {

        std::string pathOutput;

        {
            std::ostringstream tmpflx;

            //time sert à garantir l'unicite du fichier temporaire
          tmpflx<<pathFile<<"_tmp"<<time(0); 
          pathOutput=tmpflx.str();
      }

      std::ofstream output(pathOutput.c_str());
      if(output)
      {
          int line = 0;
          while ( std::getline( input, buffer) ) 
          {
            line++;
            if(line != lineToErase)
                output<<buffer+"\n";
          }
    
          input.close();
          output.close();
          
          std::remove(pathFile);
          std::rename(pathOutput.c_str(),pathFile);
      }
    }
}

Auteur : C++ CookBook
Version : 13/08/2008
Page de l'auteur
Téléchargez le zip
Classe à valeurs bornées
Il existe beaucoup de cas où une classe ne peut accepter qu'un certain interval de valeurs bien précis: par exemple les jours de la semaine, le nombre de jours dans un mois ... Cette classe a pour but de fournir un moyen générique pour générer des types bornés.


Auteur : C++ CookBook
Version : 13/08/2008
Formatage des données
Formater et aligner des données sur le flux de sortie standard n'est pas toujours quelque chose de très facile à réaliser. Cette classe est là pour palier à ce problème, grâce à elle, vous pouvez désormais afficher des données aussi alignées que dans un tableur

/*
Excerpted from "C++ Cookbook" by Ryan Stephens, Christopher Diggins,
Jonathan Turkanis, and Jeff Cogswell. Copyright C 2006 O'Reilly Media, Inc.
All rights reserved. Used with permission.
Published by O'Reilly Media, Inc.
To purchase this book go to: http://oreilly.com/catalog/9780596007614/
*/

#include <iostream> 
#include <iomanip> 
#include <string> 
#include <list> 
#include <vector> 

// TableFormatter formats data for output to a stream of characters 
// of type T. 

template<typename T> 
class TableFormatter { 
public: 
    TableFormatter(std::basic_ostream<T>& os) : out_(os) {} 
  ~TableFormatter( ) {out_ << flush;} 

    template<typename Cont> // refers to mem fn template param list 
    void writeTableRow(const Cont& v, int width) { 
       ios_base::fmtflags flags = out_.flags( ); 
       out_.flush( ); 
       out_ << setprecision(2) << fixed;  // Set the precision, in case 
       // this is floating-point data 
       for (typename Cont::const_iterator p = v.begin( ); 
            p != v.end( ); ++p) 
           out_ << setw(width) << left << *p;  // Set the width, justify, 
       // and write the element 
       out_ << endl;     // Flush 
       out_.setf(flags); // Set the flags back to normal 
    } 

 

private: 
    std::basic_ostream<T>& out_; 
};
Et voici un exemple d'utilisation

int main( ) { 
   TableFormatter<char> fmt(cout); 
   vector<string> vs; 
   vs.push_back( "Sunday" ); 
   vs.push_back( "Monday" ); 
   vs.push_back( "Tuesday" ); 


   vector<string> vs2; 
   vs2.push_back( "John" ); 
   vs2.push_back( "Susie" ); 
   vs2.push_back( "Alan Smith" ); 

   fmt.writeTableRow(vs, 12); 
   fmt.writeTableRow(vs2, 12); 

   list<double> vd; 
   vd.push_back(4.0); 
   vd.push_back(3.0); 
   vd.push_back(2.0); 

   fmt.writeTableRow(vd, 12); 
}

rechercher
precedent    sommaire    suivant    telechargermiroir

Consultez les autres pages sources


Valid XHTML 1.1!Valid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.