Hogyan kell C++ -ban beolvasni egy TXT szövegfájlt?
így néz ki a txt:
1 13
#abor# #e#tun###agy#szel#2# #o##h#d#g
12 5
ta###t##ertunk ##gy #zel#####ok
Szóval az egyik sorban két szám és alatta egy üzenet. Miért nem működik a kódom?
#include <iostream>
#include <fstream>
using namespace std;
struct adatok
{
int nap, radioamator;
string uzenet;
};
int main()
{
adatok adat[1000];
fstream data;
data.open("veetel.txt");
int n=0;
string temp;
while (true)
{
data>>adat[n].nap>>adat[n].radioamator;
getline(data,temp);
adat[n].uzenet=temp;
if (data.eof())
break;
else
n++;
}
return 0;
}
Leáll a program működése. A CMD az 1. sort még jól írja ki aztán elszaródik. Ahol a szöveges üzenetnek kéne lennie ott üres sor van, ahol meg a számoknak 0 0 van.
így néz ki:
1 13
[üres sor]
0 0
[üres sor]
0 0
és így tovább
Mert elcsúszik a beolvasásod a >> és getline vegyes használata miatt.
A >> otthagyja az első sor végén a newline-t, Te meg azt olvasod be a getline-nal, innentől kezdve meg minden elcsúszik.
#include <iostream>
#include <fstream>
using namespace std;
struct adatok {
int nap, radioamator;
string uzenet;
};
int main()
{
adatok adat[1000];
ifstream data; // fstream helyett inkább ifstream.
data.open("veetel.txt");
if (data.is_open()) {
int n = 0;
string temp;
while (data.peek() != EOF) {
data >> adat[n].nap;
data >> adat[n].radioamator;
getline(data, temp); // Az elõzõ sort még végig kell olvasni.
getline(data, adat[n].uzenet);
n++;
}
data.close();
}
return 0;
}
Köszönöm!
Egyébként közben rájöttem, hogy így is működik:
data>>adat[n].nap>>adat[n].radioamator;
data.ignore();
getline(data,adat[n].uzenet);
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!