Kezdőoldal » Számítástechnika » Programozás » Miért hibás C++ -ban ez a...

Miért hibás C++ -ban ez a beolvasás?

Figyelt kérdés

std::ifstream ist{"1.txt"};


while(!ist.eof())

{

char *t = new char[30];

ist >> t;

std::cout << t << " ";

delete[] t;

}



2015. szept. 10. 20:56
1 2
 1/12 anonim ***** válasza:
2015. szept. 10. 21:27
Hasznos számodra ez a válasz?
 2/12 A kérdező kommentje:
Látom nehezedre esik értelmezni a kérdést.
2015. szept. 10. 21:35
 3/12 anonim ***** válasza:
Talán esetleg írd le, hogy mit ír ki hibának te csökevényes agyú.
2015. szept. 10. 21:42
Hasznos számodra ez a válasz?
 4/12 A kérdező kommentje:
Nem ír hibát, mi lenne ha olyan akinek köze nincs az adott nyelvhez nem válaszol?
2015. szept. 10. 21:53
 5/12 anonim ***** válasza:
Akkor nézd meg a tutorial, amit küldtem, mr "Köze van hozzá", mert amit csináltál az SZ.A.R.
2015. szept. 10. 21:58
Hasznos számodra ez a válasz?
 6/12 A kérdező kommentje:
Akkor azt írd le válaszban miért rossz, ne azt, hogy mi jó.
2015. szept. 10. 22:01
 7/12 anonim ***** válasza:

Szerintem az a baj, hogy a karakter tömb esetében nem lehet használni a >> operátort + nem ártana inicializálni a tömböt.


Így pl. már működik:


std::ifstream ist{"1.txt"};


while(!ist.eof())

{

char *t = new char[30]();

ist.read(t, 30);

std::cout << t << " ";

delete[] t;

}

2015. szept. 10. 22:05
Hasznos számodra ez a válasz?
 8/12 A kérdező kommentje:

Lehet használni a >> operátort, azonban ha több karakter van a bufferben hibát dob. A read funkcióval így az már nem probléma, azonban felvet egy másik problémát.


Ezen felül még van benne 1 hiba ami helytelen futást eredményez, és 1 hiba ami teljesítménybelit.


Melyik az újonnan felmerült probléma, és melyik a másik kettő?

2015. szept. 10. 22:17
 9/12 anonim ***** válasza:

Hiba:

std::ifstream ist{"1.txt"};

Itt mit keres kapcsoszarojel.


Teljesitmeny:

A ciklusban mindig uj memoriateruletet new-olsz majd torlod, amikor eleg lenne egyszer lefoglalni es ujrahasznalni.

2015. szept. 10. 23:01
Hasznos számodra ez a válasz?
 10/12 A kérdező kommentje:

std::ifstream ist{"1.txt"}; C++11 ( [link]


Új hiba:

ist.read(t, 30) után nem lesz 0 terminated a string.


Régi hiba:

!ist.eof(), mert így mindenképpen lefut egyszer a ciklus


A teljesítményes meglátásod teljesen jó.

2015. szept. 10. 23:24
1 2

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!