Lecture d'un buffer par tranche de caracteres

souriiis Messages postés 2 Statut Membre -  
 loupius -
bonjour a tous et toutes, je suis un "novice" en c++.

je cherche a lire le contenu d'un buffer par tranche de caracteres. Ce buffer a été préalablement rempli par le contenu d'un fichier .TXT

	ifstream fichier ;
	fichier.open( "mon_fichier.txt" ) ;

	if (fichier)
	{
		stringstream buffer ;
		buffer << fichier.rdbuf() ;
		fichier.close() ;


j'ai trouver une astuce qui me permet de lire le buffer mot par mot seulement la structure du fichier est tel que certains mots se suivent et donc ne sont considéré que comme un seul mot :

ex : 12.89563.45
ici j'ai 2 prix 12.89 et 563.45

mes "mots" sont a des endroits fixes dans mon fichier. c'est a dire que le premier prix commence a un nombre de caractere fixe (par ex: au 88° caractere) et est stocké sur 9 de long.

quelles sont les solutions pour lire le buffer par tranche de caracteres. j'entend par la : lire le buffer du caractere 88 au caractere 96 par exemple.

merci a tous pour vos reponses.

bonne journée !
A voir également:

3 réponses

souriiis Messages postés 2 Statut Membre
 
j'ai oublié de preciser que c'est en c++.

merci a tous
0
rosco91
 
moi aussi je cherche cette information!
0
Phyrexian
 
Pour ca c'est pas trop compliqué,
en fait tu utilise ton buffer comme un tableau
le premier caractere est en 0 donc pour lire de 88 à 96 tu fait

for (int i=88;i<=96;i++)
cout << buffer.str()[i];

Ca devrai fonctionner.

De mon coté j'ia aussi un probleme dans le meme style mais plus complexe.
Je cherche a partir d'un buffer à identifier chaque partie de ma ligne genre

N4GR2 UA1_2 [BRAVAIA] 19/11/2008 08:00:00 10:00:00 511

identifier chaque partie (nom , date , heure debut , heure fin, puis salle) pour pouvoir les traiter ensuite.
0
loupius
 
Traitement de chaînes de caractères ======>>>>>> Perl est la solution
#!/usr/bin/perl -w
use strict;

$_ = "N4GR2 UA1_2 [BRAVAIA] 19/11/2008 08:00:00 10:00:00 511";
m[(.*?)\s(\d{2}/\d{2}/\d{4})\s(\d{2}:\d{2}:\d{2})\s(\d{2}:\d{2}:\d{2})\s(\d*)];

print "nom\t: ". $1 ."\n";
print "date\t: ". $2 ."\n";
print "heure début\t: ". $3 ."\n";
print "heure fin\t: ". $4 ."\n";
print "salle\t: ". $5 ."\n";

1 ligne suffit à faire le découpage.
On peut faire plus succinct, tout dépend des conditions de la ligne à traiter.
0