« Exercices en langage C++/La STL » : différence entre les versions

corrections
(corrections)
== La STL ==
EXERCICE SUR LA CLASSE STRING
 
=== EXERCICE 1 : La classe string ===
Soit la chaine chaine1 = ":010920091123" contenant la date
sous la forme : 01 09 2009 11 23
( 1 septembre 2009 11 h 23 )
Créer une programme permettant d'extraire les différents champs et de les afficher
 
Soit une chaîne de caractères contenant une date (JJ/MM/AAAA) et une heure (HH:NN) sous la forme <tt>JJMMAAAAHHNN</tt>. Par exemple <tt>010920091123</tt> représente la date du 1er septembre 2009 à 11h23.
 
Créer uneun programme permettant d'extraire les différents champs et de les afficher .
************************
SOLUTION :
************************
 
{{Boîte déroulante|titre=Solution|contenu =
#include <iostream>
Cet exercice a pour but de vérifier les points techniques suivants :
#include <sstream>
*Manipulation.
#include <string>
*Un algorithme simple sur un tableau : recherche du nombre d'éléments vérifiant une propriété.
 
Voici le fichier source :
void main()
<source lang="cpp">
#include <iostream>
#include <sstreamiomanip>
#include <string>
 
using namespace std;
std::string chaine1;
std::string jour, heure, minute;
 
chaine1 = ":010920091123";
 
 
if ( !chaine1.empty() )
{
jour = chaine1.substr( 1, 2 );
heure = chaine1.substr( 9, 2 );
if ( chaine1.size() <= 14 )
minute = chaine1.substr( 11, 2 );
}
 
chaine1.clear();
 
if ( !chaine1.empty() )
{
jour = chaine1.substr( 1, 2 );
heure = chaine1.substr( 10, 2 );
minute = chaine1.substr( 12, 2 );
}
 
// Conversion de string en entier :
int min;
 
std::stringstream s;
 
s << minute ;
s >> min;
 
void afficherDateEtHeure(const string& s)
if ( s.length() != 12 )
cerr << "Chaine invalide." << endl;
else
{
cout << "Date : " << s.substr(0,2) << "/" << s.substr(2,2) << "/" << s.substr(4,4) << endl;
cout << "Heure : " << s.substr(8,2) << "h" << s.substr(10,2) << endl;
}
}
 
int main(int argc, char** argv)
{
chaine1 = string s(":010920091123");
afficherDateEtHeure(s); // exemple
}
</source>
}}