» »

Delo z datotekami [C++]

Delo z datotekami [C++]

Bojevnik ::

zanima me kako bi nekaj iz datoteke E:\out.txt izpisal

#include <stdio.h>
#include <iostream.h>
#include <conio.h>
#include <fstream.h>

void main() 
{

ifstream MojDat("E:/out.txt");

char ch;

while (MojDat.get(ch)) {
cout << ch;
}
getch();
}


LP & LD

[edit - uporabi tage: kvadratni oklepaj st.koda c kvadratni zaklepaj - vsc]
  • spremenil: Vesoljc ()

Deno ::

Tvoja while zanka bi morala biti taka:

 while (! MojDat.eof() )
  {
    MojDat.getline (buffer,100);
    cout << buffer << endl;
  }

OwcA ::

Kaj pa kar:

MojDat >> cout;


Nisem 100 %, da to dela, ampak nekako se da preusmerjati streame, brez preveč packanja.
Otroška radovednost - gonilo napredka.

Bojevnik ::

Deno a mi lahko poveš ker file je še treba includat, ker mi napiše buffer undeclared

LP & LD

OwcA ::

Ideja je, da ti deklariraš neko spremenljivko buffer.

Še to, če hočeš pisati C++ in ne nekega skrupucala, uporabi knjižnice brez .h v imenu in razreševalce imenskih prostorov.
Otroška radovednost - gonilo napredka.

Bojevnik ::

Uspel mi je, sicer na malenkost drugačen način (brez bufferja) ampak dela.

P.S. 0wca: sm šele začetnik in večino sem se naučil iz takih in drugačnih tutorialov, tka da še delam by the book
pa kaj so to razreševalci(so to mogoče konstruktorji in destruktorji)??
in katerega tipa spremenljivka je buffer??


LP & LD

Zgodovina sprememb…

  • spremenilo: Bojevnik ()

OwcA ::

Potemtakem delaš by the crapy book.

Preberi si naš članek na to temo.
Otroška radovednost - gonilo napredka.

Bojevnik ::

Pohvala avtorju članka, je dost bolj razložen kot v večini knjig pa še povezave so boljše kot sem jih jaz mel.

Drgač pa mislm da vem kaj si mislu, treba "počistit" za sabo
in tudi ne imet nedefiniranih spremeljivk.

Hvala

LP & LD

Vesoljc ::

razreševalci (mater mam rad ta jezik :D) imenskega prostora so nekaj kar nam lahko zelo pomaga pri organizaciji programov oziroma njihove programske kode (še posebaj, ko gre za velike projekte). gre za to, da nek določen skupek izvorne kode, ovijemo v nekaj, čemur rečemo imenski prostor. to izgleda nekako tako:

namespace osnova
{
   int bla()
   {
       return 0;
   }
   
   int a;
};


no, in če želimo dostopati do funkcije bla ali spremenljivke a, moramo podati tudi imenski prostor v katerem se nahaja.
// prvi način
int b = osnova::bla();
int c = osnova::a;

// drugi način
using namespace osnova;
int d = bla();
int e = a;


in čemu je to dobro? pri projektih, kjer sodeluje več ljudi, se lahko kaj kmalu zgodi, da se določena imena funkcij/spremneljivk/objektov ponovijo, kar povzroči lahko veliko težav. če pa ima vsak "ljudek" svoj (unikaten!) imenski prostor, pa do tega ne more priti.
verjetno najbolj pogosto uporabljan imenski prostor je std, ki ga uporablja Standard template library (iomanip, string, iostream, itd..).
Abnormal behavior of abnormal brain makes me normal...

64202 ::

In kaj je zdaj t.i. razresevalec? "using namespace"? WTF :). Zgoscenka naenkrat postane cisto vsakdanji pojem :D.

Bojevnik ::

Mislim da raumem, se pravi pravilno je tole:



#include "iostream"
#include "fstream"

namespace crka
{

char le;
}

void main()
{

ifstream MojDat("E:/out.txt");

char ch= crka::le;

while (MojDat.get(ch)) {
cout ** ch;
}
cin.ignore();
}

Pa ali so razreševalci uporabljeni samo zaradi organizacije
ali imajo še kak drug učinek??

Zgodovina sprememb…

  • spremenilo: Bojevnik ()

Vesoljc ::

še enkrat...

ko pišeš kodo uporabi TAG (brez presledkov pri oklepajih):
[ st.koda c ]
[ /st.koda c ]

#include <iomanip>
Abnormal behavior of abnormal brain makes me normal...

Gundolf ::

razreševalec = namespace?
LOL

BigWhale ::

Mogoce resolver...

Bojevnik ::

:D
<Hvala za to>
:D

64202 ::

Ok, debata zakljucena, namespace po novem prevajamo z resolver.

:D

OwcA ::

Razreševalec je operator ::
Namespce je imenski prostor.
Otroška radovednost - gonilo napredka.

Gundolf ::

Aha, to se pa ze bolje slisi.

Bojevnik ::

Pa še eno vprašanje mam, kako se izpiše samo 1 vrstica
sm probal
while(! MojDat.eol()) { }
in while(! MojDat.endl()) {}

OwcA ::

Čemu sploh z while strašiš naokoli?

char *buffer = new char[100];
MojDat.getline(buffer, 100);
Otroška radovednost - gonilo napredka.

Gundolf ::

Cemu strasis z char[] bufferji?
string buffer;
getline(MojDat, buffer);
cout << buffer;

OwcA ::

Ker je prototip za getline() tako definiran.
Otroška radovednost - gonilo napredka.

Gundolf ::

Obstaja globalni getline (ni member funkcija streama), ki shranjuje v string. Premajhni bufferji so tako stvar preteklosti.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

problemi z export file c++

Oddelek: Programiranje
6568 (459) kow
»

[C++] problem z binarnimi datotekami

Oddelek: Programiranje
9955 (820) mallard
»

[C++] Delo s *.txt datotekami

Oddelek: Programiranje
192030 (1506) Tr0n
»

int to string v c++

Oddelek: Programiranje
272341 (2069) OwcA
»

[c++] zapis doubla/longa v datoteko

Oddelek: Programiranje
9911 (835) 64202

Več podobnih tem