Lecture d'un buffer par tranche de caracteres

Fermé
souriiis Messages postés 2 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 31 mai 2005 - 31 mai 2005 à 16:12
 loupius - 29 déc. 2008 à 02:09
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 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 31 mai 2005
31 mai 2005 à 16:14
j'ai oublié de preciser que c'est en c++.

merci a tous
0
moi aussi je cherche cette information!
0
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
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