www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in raèunalni¹tvu
 
 PomoèPomoè  I¹èiI¹èi  Seznam èlanovSeznam èlanov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporoèilPrijava za pregled zasebnih sporoèil PrijavaPrijava 

c++ fstream

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema
Poglej prej¹njo temo :: Poglej naslednjo temo  
Avtor Sporoèilo
ljudsko
Èlan
Èlan



Pridru¾en-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koro¹ka-Me¾ica

PrispevekObjavljeno: Tor Nov 22, 2011 10:47 pm    Naslov sporoèila:  c++ fstream Odgovori s citatom

Lep pozdrav!
Malo osve¾ujem znanje iz C++ in delam primer, kjer v neko datoteko zapi¹em trenutni èas in datum, ter ga nato iz datoteke preberem na izhod. V kolikor samo pi¹em v datoteko, se program izvede semantièno èisto pravilno. Èim pa ¾elim brati iz datoteke, pa mi program v datoteko doda kup enih in istih znakov, ki jih nato tudi prebere. Ne vem sicer zakaj in debuggiram ¾e lep èas, pa postavljam brake pointe, da bi videl kaj zanimivega, pa niè ne opazim. Morda bo kdo izmed vas to na prvi pogled opazil:

Koda:
#include "stdafx.h"
#include <time.h>
#include <iostream>
#include <fstream>
#include <string>


int _tmain(int argc, _TCHAR* argv[])
{   
   std::string scas;
   std::fstream datoteka;
   datoteka.open("cas.txt");

   time_t cas;   
   time(&cas);   
   int n=strlen(ctime(&cas));

   if(datoteka.is_open()){
      scas=ctime(&cas);
      datoteka<<scas;      
      while(!datoteka.eof()){
         std::getline(datoteka,scas);
         std::cout<<scas<<"\n";
      }
      datoteka.close();
   }
   else
      std::perror("Napaka pri odpiranju datoteke");   
   return 0;
}

Èe while zanko zakomentiram in roèno odprem datoteko, se v njo vse pravilno zapi¹e. Èe pa je program tak kot je zdaj, pa je v datoteki tole:
Citiram:
Tue Nov 22 21:43:33 2011
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ


PS.: Prosim, èe moderator uredi moj post, ker ne znam narediti prelom vrstice. Hvala!

done

_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo Po¹lji E-sporoèilo
chaos
Èlan
Èlan



Pridru¾en-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Sre Nov 23, 2011 6:41 pm    Naslov sporoèila:   Odgovori s citatom

V tvoji kodi je na prvi uc nekaj napak.

Pri odpiranju datoteke moras povedati, v kaksnem mode-u jo bos uporabljal:
Koda:

datoteka.open("cas.txt", std::ios::in | std::ios::out | std::ios::app);


Po tem, ko v datoteko pises, moras kazalec "previti" na zacetek, ce bi rad iz datoteke bral:
Koda:

datoteka.seekg (0, std::ios::beg);


Ne vem kateri prevajalnik uporabljas, a gcc se ni ravno strinjal s tvojo kodo. Tukaj je cel popravljen program:
Koda:

#include <time.h>
#include <iostream>
#include <fstream>
#include <string>
#include <cstring>

int main(int argc, char* argv[])
{   
  std::string scas;
  std::fstream datoteka;
  datoteka.open("cas.txt", std::ios::in | std::ios::out | std::ios::app);

  time_t cas;
  time(&cas);

  if(datoteka.is_open()){
    scas=ctime(&cas);
    datoteka<<scas;
    datoteka.seekg (0, std::ios::beg);
    while(!datoteka.eof()){
      std::getline(datoteka,scas);
      std::cout<<scas<<"\n";
    }
    datoteka.close();
  } else {
       std::perror("Napaka pri odpiranju datoteke");
  }

    return 0;
}


LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo
ljudsko
Èlan
Èlan



Pridru¾en-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koro¹ka-Me¾ica

PrispevekObjavljeno: Sre Nov 23, 2011 7:35 pm    Naslov sporoèila:   Odgovori s citatom

Super, hvala, deluje!
Ampak vseeno me pa zanima, kaj je razlog, da se med preverjanjem v while zanki, èe je datoteka prazna in branjem iz datoteke, datoteka spremeni? Zakaj so se dodali neki znaki, èe pa sem samo bral iz datoteke. Kako je to mogoèe? Uporabljam pa visual studio, èe to igra kak¹no vlogo.
Aja, glede zaèetnega izbora naèina odpiranja datoteke, ki si ga omenil. Na C++ reference sem prebral, da se te zastavice, ki si jih napisal po default tako nastavijo, èe jih ne napi¹emo. Zato jih nisem pisal.

_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo Po¹lji E-sporoèilo
chaos
Èlan
Èlan



Pridru¾en-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Sre Nov 23, 2011 9:13 pm    Naslov sporoèila:   Odgovori s citatom

®al ne uporabljam Visual Studia, tako da ne morem komentirati, zakaj se ti je to dogajalo. Z gcc-jem se namreè ne.

Na linuxu z gcc-jem je default openmode za fstream ios::in | ios::out, mora¹ pa dodati ios::app, drugaèe ne bo hotel ustvariti nove datoteke - lahko bere¹ in pi¹e¹ samo obstojeèe. Poskusi brez teh zastavic, mogoèe pa dela tudi tako.

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo
ljudsko
Èlan
Èlan



Pridru¾en-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koro¹ka-Me¾ica

PrispevekObjavljeno: Sre Nov 23, 2011 10:38 pm    Naslov sporoèila:   Odgovori s citatom

Aha. Nevem, paè zopet neko microsoftovo zluknjano orodje. Ima¹ prav, datoteko sem roèno ustvaril. Èe jo pobri¹em, se pojavi napaka, ki pravi, da datoteka ne obstaja. Torej samo zastavica app doloèa, da morebitno datoteko, ki ne obstaja, program sam ustvari? Dodam samo tole zastavico, drugi dve sta pa privzeti?
_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo Po¹lji E-sporoèilo
aly
Èlan
Èlan



Pridru¾en-a: Tor 28 Sep 2004 14:51
Prispevkov: 9407
Aktiv.: 39.69
Kraj: Kranj - stru¾evo

PrispevekObjavljeno: Èet Nov 24, 2011 3:40 am    Naslov sporoèila:   Odgovori s citatom

Èe hoèe¹ biti siguren da ve¹ kaj se dogaja, eksplicitno postavi tiste zastavice, ki jih rabi¹. Ne se zana¹ati na "privzete" vrednosti, ki bodo nekje drugje pa drugaène.
_________________
I'm going to stand outside, so if anyone asks, I'm outstanding Smile
Nazaj na vrh
Skrit Poglej uporabnikov profil Po¹lji zasebno sporoèilo Obi¹èi avtorjevo spletno stran MSN Messenger - naslov
ljudsko
Èlan
Èlan



Pridru¾en-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koro¹ka-Me¾ica

PrispevekObjavljeno: Èet Nov 24, 2011 1:47 pm    Naslov sporoèila:   Odgovori s citatom

Zanimivo, prevajanje s gcc-jem pa da rezultat else stavek:
Citiram:
Napaka pri odpiranju datoteke: No error
. Debuggirat pa ne morem, ker ima ta prevajalnik (gdc) nekega hro¹èa, ki se noèe ustavljati na break-pointih. Uporabljam netbeans. Vem, da obstaja nek workaround, da se netbeans za¾ene z neko zastavico, ampak vseeno debugger ne deluje v popolnosti tako, kot bi moral. Morda je za skok v else stavek zopet napaka v mojem programu?
Koda:
#include <cstdlib>
#include <iostream>
#include <fstream>
#include <ctime>

using namespace std;

void wait ( int seconds )
{
  clock_t endwait;
  endwait = clock () + seconds * CLOCKS_PER_SEC ;
  while (clock() < endwait) {}
}

int main(int argc, char** argv) {

    string scas;
   
        fstream datoteka;
        datoteka.open("C:\\cas.txt",ios::in|ios::out|ios::app);

   time_t cas;   

   if(datoteka.is_open()){
      for(int i=0;i<=5;i++){
         time(&cas);
         scas=ctime(&cas);
         datoteka<<scas;
         wait(1);
      }
      datoteka.seekg(0,ios::beg);
      while(!datoteka.eof()){
         getline(datoteka,scas);
         cout<<scas<<endl;
      }
      datoteka.close();
   }
   else
      perror("Napaka pri odpiranju datoteke");   
   return 0;
}

_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo Po¹lji E-sporoèilo
ljudsko
Èlan
Èlan



Pridru¾en-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koro¹ka-Me¾ica

PrispevekObjavljeno: Èet Nov 24, 2011 7:58 pm    Naslov sporoèila:   Odgovori s citatom

chaos, ali uporablja¹ kaj eclipse. Namreè zanima me, kako ga nastavim, da mi ne bo vedno potrebno vseh .dll knji¾ic kopirat v mapo z .exe datoteko, da bom lahko program zagnal v eclupsu. Èe teh datoteh ni v mapi debug, mi napi¹e "terminated, exit value:-1073741515".
Nekaj èasa sem potreboval, da sem ugotovil, da morajo biti knji¾ice v isti mapi. Ima¹ kak¹no idejo? Uporabil pa sem MinGw.

_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo Po¹lji E-sporoèilo
chaos
Èlan
Èlan



Pridru¾en-a: Sob 16 Sep 2006 22:12
Prispevkov: 1063
Aktiv.: 4.66
Kraj: Zagorje ob Savi

PrispevekObjavljeno: Èet Nov 24, 2011 8:02 pm    Naslov sporoèila:   Odgovori s citatom

Verjetno bi pomagalo, ce das pot do knjiznic v PATH.

LP!
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo
ljudsko
Èlan
Èlan



Pridru¾en-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koro¹ka-Me¾ica

PrispevekObjavljeno: Pet Nov 25, 2011 11:51 pm    Naslov sporoèila:   Odgovori s citatom

Vseh nekaj deset .dll knji¾ic? Gotovo mora obstjati druga re¹itev, glede na to, da pri drugi razvojnih okoljih tega ni potrebno poèeti.
_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo Po¹lji E-sporoèilo
ljudsko
Èlan
Èlan



Pridru¾en-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koro¹ka-Me¾ica

PrispevekObjavljeno: Tor Dec 13, 2011 1:15 pm    Naslov sporoèila:   Odgovori s citatom

Ok, sem poskusil tole. Program lahko za¾enem izven Eclipse-a, ampak v Eclipse pa ne (run gumbek). Ista napaka, kot èe ne bi bilo knji¾ic.
_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo Po¹lji E-sporoèilo
ljudsko
Èlan
Èlan



Pridru¾en-a: Pon 31 Mar 2008 8:19
Prispevkov: 1184
Aktiv.: 5.65
Kraj: Koro¹ka-Me¾ica

PrispevekObjavljeno: Tor Dec 13, 2011 3:32 pm    Naslov sporoèila:   Odgovori s citatom

Pod run configurations sem moral dodati path spremenljivko in ji dodati ciljno mapo, kjer so vse te .dll knji¾ice. Sme¹no, ker bom moral to poèeti za vsak projekt posebej. Poleg tega sem moral ¹e v MinGW linker nastavitvah pod libraries dodati debug mapo od projekta in pa ime knji¾ic... Zamudno, ampak deluje.
_________________
return;
brake;
Nazaj na vrh
Odsoten Poglej uporabnikov profil Po¹lji zasebno sporoèilo Po¹lji E-sporoèilo
Poka¾i sporoèila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Programska oprema Èasovni pas GMT + 2 uri, srednjeevropski - poletni èas
Stran 1 od 1

 
Pojdi na:  
Ne, ne more¹ dodajati novih tem v tem forumu
Ne, ne more¹ odgovarjati na teme v tem forumu
Ne, ne more¹ urejati svojih prispevkov v tem forumu
Ne, ne more¹ brisati svojih prispevkov v tem forumu
Ne ne more¹ glasovati v anketi v tem forumu
Ne, ne more¹ pripeti datotek v tem forumu
Ne, ne more¹ povleèi datotek v tem forumu

Uptime: 496 dni


Powered by phpBB © 2001, 2005 phpBB Group