Portál AbcLinuxu, 11. května 2025 01:09

Dotaz: C++

24.5.2011 12:16 ubka7617
C++
Přečteno: 440×
Odpovědět | Admin

Dobry den, ucim sa C++ a potreboval by som nakopnut spravnym smerom. Konretne by som

potreboval poradit akym sposobom z text suboru v ktorom bude premmena=hodnota nacitat

vsetky premmen a vyuzivat ich v programe a ako dokazem overit v linuxe ci je pripojeny disk na

/dev/sdb.

Vsetkym dakujem


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.5.2011 13:20 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: C++
Odpovědět | | Sbalit | Link | Blokovat | Admin
potreboval poradit akym sposobom z text suboru v ktorom bude premmena=hodnota nacitat vsetky premmen a vyuzivat ich v programe

C++ nie je skriptovací jazyk. Mená premenných po skompilovaní prestávajú mať význam. Kompiláciou sa použitia premenných v programe nahradia prácou s ich adresou. Chcem povedať, že nemôžeš mať premennú foo a po načítaní reťazca "foo" do programu očakávať, že nejak vydoluješ hodnotu premennej, ktorá sa v zdrojákoch volala foo. To čo potrebuješ môžeš riešiť tak, že si vyrobíš napr. zoznam párov stringov, kde jedna položka v tom zozname bude mať jeden string - ktorý budeš plniť tým čo je na jednom riadku v súbore pred znakom = a druhý string tým čo je za znakom =. Keď budeš potrebovať "hodnotu premenej" tak ako je definovaná v tom vstupnom súbore, tak prelezieš ten zoznam a nájdeš položku kde prvý string je zhodný s "menom premennej", ktorú poznáš. Druhý string z tej položky bude "hodnota premennej".
a ako dokazem overit v linuxe ci je pripojeny disk na /dev/sdb
Otázkou je, čo to znamená "pripojený". /dev/sdb reprezentuje disk (i.e. nie partíciu na idsk) v systéme. Potom môžeme debatovať o tom, ako zistíš, či je to blokové zariadenie (stat(2) a S_ISBLK), aké má minor a major čísla (minor(), major()), či je na ňom filesystém, či je primountovaný (/proc/mounts), aké má partície (/proc/partitions) atď
skunkOS avatar 24.5.2011 13:45 skunkOS | skóre: 27 | blog: Tak nějak
Rozbalit Rozbalit vše Re: C++
Podle mě nemáš tak úplně pravdu. Takové pseudo-vytváření proměnných podle klíče "nazevpromenne" = hodnota z řádku souboru se dají celkem pěkně zpracovat. Třeba se dá použít něco jako
map< string, double> prommenneZeSouboru;

prommenneZeSouboru["nazevpromenne"] = hodnota;
Pak jen přistupuješ přes prommenneZeSouboru["nazevpromenne"]
http://martinrotter.github.io
24.5.2011 16:00 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: C++
a) stl::map je len hotová (a asi trocha chytrejšia) implementácia toho prístupu, ktorý som popísal

b) ak má v zdrojáku
int i=1234;
string str="i";

tak nie je možné do premennej i dostať hodnotu napr. 5678 pomocou obsahu premennej str inak než

if (str=="i")
   i=5678;

čo je dosť neflexibilné ;-)
24.5.2011 17:49 ::: | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: C++
na to slouzi ta mapa:
i = variables["i"];
skunkOS avatar 24.5.2011 22:50 skunkOS | skóre: 27 | blog: Tak nějak
Rozbalit Rozbalit vše Re: C++
přesně tak
http://martinrotter.github.io
24.5.2011 14:23 ubka7617
Rozbalit Rozbalit vše Re: C++

a ako dokazem overit v linuxe ci je pripojeny disk na /dev/sdb

 

potrebujem len zistit ci je pripojeny cez usb a potom ak ano nasledne formatovat a nahrat potrebne subory

rADOn avatar 24.5.2011 15:22 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: C++
Staci shell a neco jako
test  $(cat /sys/class/block/sdb/size) -gt 0 && mkfs.ext3 /dev/sdb
(pomijim ze takhle vynechavat parition tabuli je prasarna)
"2^24 comments ought to be enough for anyone" -- CmdrTaco
24.5.2011 15:51 rastos | skóre: 63 | blog: rastos
Rozbalit Rozbalit vše Re: C++
Bolo by vhodné overiť si, že ten disk, ktorý vidí ako /dev/sdb je skutočne ten USB disk, ktorý chce naformátovať. Heh.
rADOn avatar 25.5.2011 13:44 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: C++
Jasně, já bych si radši rovnou napsal konfigurák pro udev aby to ohlídal, ale to už je OT.
"2^24 comments ought to be enough for anyone" -- CmdrTaco

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.