Salut, j�ai un petit Pb de compr�hension (pour info je compile avec cygwin)
Je suis dans un programme o� je me retrouve avec une ligne,
qui comprends 3 infos, un Id une Date et une Valeur.
Il n'y a pas de caract�re de s�paration je ne peux donc pas utiliser un getline.
Par contre mes colonnes sont de tailles fixes (10,8,12)
L'Id est une string que 10 caract�res compl�t� par des espaces.
Le Pb survient � lecture, par d�faut skipws est � 1 donc les espaces ne sont pas pris en compte et la lecture est donc d�cal�.
L'utilisation du unsetf semble empirer la lecture.
Par contre en lisant le flux carac par carac �a marche operator >> (char*c)
Je ne comprends pas comment le faire proprement pour r�cup�rer la string initial
La solution suivante marche mais ne me plait pas trop:
id=string(tab,tab+10);
st.seekg(10);
Merci d'avance pour vos pr�cisions et explications
Cdt.
Alsk
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 //------------------------------------------// //Code initial a tester avec et sans le unsetf // //------------------------------------------// string id,date; int val; char tab[100]; strstream st(tab,100); st.fill(' '); st.width(10); st<<"987654C";// entre l'id sur 10 carac st.width(8); st<<"20061007";// entre une date st.width(12); st.fill('0'); st<< 1234567<<ends;// entre un chiffre cout <<"enter:"<< st.str()<<endl; //st.unsetf(ios::skipws); st.fill(' '); st.width(10); st>>id; st.width(8); st>>date; st.width(12); st.fill('0'); st>>val; cout << id <<":"<< date <<":"<< val<< endl;
Partager