Slettet bruger
12. februar 2004 - 08:23
Der er
16 kommentarer og 2 løsninger
Hvorfor tages første karakter ikke med fra fil?
Jeg har følgende kode: #include <iostream> #include <fstream> #include <string> using namespace std; int main() { char ch; const int buffSize = 200; char inBuff[buffSize]; string iFileName; cout << "Skriv komplet sti til fil som skal laeses: "; cin >> iFileName; ifstream iFile(iFileName.c_str()); while (iFile.get(ch)) { iFile.getline(inBuff,buffSize); cout << inBuff << endl; } return 0; } Når jeg så får præsenteret filens indhold mangler første karakter i samtlige linier. Hvordan kan dette problem løses?
Annonceindlæg fra SoftwareOne
12. februar 2004 - 08:25
#1
Den bliver jo "spist" af get...
Slettet bruger
12. februar 2004 - 08:25
#2
vil det sige at get spiser altid den første karakter af det den indlæser? Kedelig kommando!! Hvordan kan jeg løse problemet så?
12. februar 2004 - 08:29
#3
Problemet er jo at du bruger get til at se omder er mere data i filen, men get indlæser 1 karakter som du jo ikke gemmer i din kode
12. februar 2004 - 08:30
#4
prøv peek istedet
12. februar 2004 - 08:31
#5
while(iFile.seek() != EOF) { ... }
12. februar 2004 - 08:32
#6
sorry: while(iFile.peek() != EOF) { ... }
12. februar 2004 - 08:33
#7
peek returnerer den næste karakter (ligesom get), men lader den ligge i din stream, så en efterfølgende funktion (som fx getline) kan læse den
12. februar 2004 - 08:37
#8
Eller måske: while(!iFile.eof())
12. februar 2004 - 08:46
#9
Ja, det ser da kønnere ud. Underligt nok står den ikke i min funktionsoversigt...
Slettet bruger
12. februar 2004 - 09:51
#11
arne v> kan du lave et svar så får i begge point. Lige et tillægs spm, hvis det er tilladt. Hvad kan jeg anvende hvis jeg skal lave en test hvor man først skal indtaste fx "stemme nr 1" og derefter "person 1" i 2 forskellige felter og bagefter gemme det i en fil? Har prøvet med string og char men det virker ikke som det skal, de mellemrum driller.
12. februar 2004 - 10:03
#12
svar
12. februar 2004 - 10:04
#13
Både string og char array bør kunne bruges. Men når du skal læse ind igen skal du enten: læse ord eller: læse linier og parse de linier
Slettet bruger
12. februar 2004 - 10:21
#14
#include <iostream> #include <string> using namespace std; int main() { string name, name1; cout << "Navn1 "; cin >> name; cout << "Navn2 "; cin >> name1; cout << "Navn1 er " << name << " og navn2 er " << name1 << endl; return 0; } sådan ser min kode ud men når jeg så skriver fx "albert nielsen" som navn besvare den automatisk begge spm :(
12. februar 2004 - 10:29
#15
Ja, >> terminerer ved mellemrum. Brug getline.
12. februar 2004 - 10:33
#16
#include <iostream> #include <string> using namespace std; int main() { string name, name1; cout << "Navn1 "; getline(cin,name); cout << "Navn2 "; getline(cin,name1); cout << "Navn1 er " << name << " og navn2 er " << name1 << endl; return 0; }
Slettet bruger
12. februar 2004 - 10:34
#17
hvordan ville det så ud? laver kage for mig :(
Slettet bruger
12. februar 2004 - 10:35
#18
sorry.. har fundet ud af det....
Kurser inden for grundlæggende programmering