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