Kezdőoldal » Számítástechnika » Programozás » Hogyan kell C++ -ban beolvasni...

Hogyan kell C++ -ban beolvasni egy TXT szövegfájlt?

Figyelt kérdés

í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;

}


2018. ápr. 22. 19:04
 1/6 anonim ***** válasza:
Miért, nem működik?
2018. ápr. 22. 19:49
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

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

2018. ápr. 22. 20:01
 3/6 anonim ***** válasza:

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.

2018. ápr. 22. 20:06
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:
És ezt hogy lehet megoldani?
2018. ápr. 22. 20:08
 5/6 sharkxxx ***** válasza:

#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;

}

2018. ápr. 22. 20:09
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:

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);

2018. ápr. 22. 20:16

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!