OVH Cloud OVH Cloud

i/o fichier

1 réponse
Avatar
Guillaume Gourdin
Bonjour, on m'impose de sauvegarder/relire dans le format suivant : une
section entre crochets, qui contient une série de valeurs textuelles
préfixées par l'index de la valeur et de \t. Par exemple :

[section1]
1 bla
2 blabla
3 bla
4 blablabla

[section2]
5 blabla
6 blablabla

[section3]
7 blablablabla
8 blabla
9 blablablablabla

Comment écririez-vous les méthodes de lecture/écriture d'un tel format ?

Merci.

1 réponse

Avatar
kanze
"Guillaume Gourdin" wrote in message
news:<bo5tvu$13e6$...
Bonjour, on m'impose de sauvegarder/relire dans le format suivant :
une section entre crochets, qui contient une série de valeurs
textuelles préfixées par l'index de la valeur et de t. Par exemple :

[section1]
1 bla
2 blabla
3 bla
4 blablabla

[section2]
5 blabla
6 blablabla

[section3]
7 blablablabla
8 blabla
9 blablablablabla

Comment écririez-vous les méthodes de lecture/écriture d'un tel format ?


std::string line ;
while ( getline( source, line ) ) {
if ( line.size() > 2
&& line[ 0 ] == '['
&& line[ line.size() - 1 ] == ']') {
std::string section( line, 1, line.length() - 2 ) ;
// ...
} else {
std::istringstream s( line + 'n' ) ;
int index ;
s >> index ;
if ( ! s ) {
// Erreur de format ou ligne vide...
} else {
s >> std::ws ;
std::string valeur ;
getline( s, valeur ) ;
// ...
}
}

En passant, je ne manquerais pas d'utiliser un streambuf filtrant pour
supporter des commentaires.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16