Vlákno názorů k článku
Přepisování parametrů příkazové řádky od mhi - To svet nevidel ... #include <iostream> #include <wchar.h> #include <locale.h> using namespace...

  • Článek je starý, nové názory již nelze přidávat.
  • 27. 11. 2017 10:19

    mhi (neregistrovaný)

    To svet nevidel ...

    #include <iostream>
    #include <wchar.h>
    #include <locale.h>

    using namespace std;

    chybi mi tam aby to jeste pouzivalo javu, .net a nejaky javascriptovy engine.

    Prvni by se pouzilo na usage, .net by treba mohl prepisovat stringy a javascriptovy kod to mohl cele ridit.

    Ceckovy main() by spustil akorat ten javascript.

  • 27. 11. 2017 21:07

    Franta Kučera

    Sračky jako .net a javascript nebudu komentovat.

    K těm knihovnám – chápu, že tohle je nad rámec toho příkladu a není to tam nezbytně nutné, nicméně chtěl jsem tam dát instrukce pro uživatele, aby věděl, co má spustit, aby si ověřil, jak to funguje. A chtěl jsem je napsat v češtině. A vzhledem k aktuálnímu letopočtu považuji unicode za základní a běžnou věc.

    Jak tedy na to? Dá se to udělat nějak jednodušeji? Vím, že znaky s diakritikou jde vypsat i přes cout << "český text" << endl;, ovšem to pracuje na úrovni bajtů a jakmile by člověk chtěl např. zarovnat/odsadit text pod sebe (přidat patřičný počet mezer), tak se to rozsype, takže by bylo potřeba celý program přepsat (tady by to bylo jedno, ale radši to píši rovnou tak, aby to fungovalo na úrovni znaků/unicodu). Co je tedy lepší? Přetížit si operátor <<, aby podporoval vícebajtové znaky? A co s formátovacími řetězci? Tam by stejně byly tyhle funkce, ne?

  • 28. 11. 2017 10:05

    Cohen (neregistrovaný)

    V reakci na první větu si Vás dovolím parafrázovat:

    Autor zprávičky by neměl psát do komentářů takové sračky.

  • 28. 11. 2017 11:43

    jouda (neregistrovaný)

    Dovolím si snad konstruktivní kritiku.
    Příklad je zjevně zacílený na začátečníky (zkušenějšímu by stačilo říct něco jako "stringy argv[] se dají přepsat" a bylo by vymalováno).

    Pak by ukázky měly být pokud možno jednoduché, týkající se jen probíraného tématu, a rozhodně by neměly zabředávat do jiných oblastí které se probírané látky netýkají (psát správně česky je zajisté chvályhodné, ale do výkladu argv[] to fakt nepatří.) Místo toho by bylo naopak třeba hezké vědět, co se třeba stane když mám program ./x a v něm dám strcpy(argv[0], "/usr/sbin/httpd"); nebo strcpy(argv[0],"y"); - na to článek neodpovídá.

    Takže závěr: držet se tématu, nekomplikovat.

    P.S. Když prvňáčkům chci vysvětlit sčítání, tak taky budu sčítat jablka a ne zavádět pojem abelovská grupa.

  • 28. 11. 2017 19:57

    Franta Kučera

    Mám to chápat tak, že vypisování textu na standardní výstup je v C++ pokročilá technika, kterou by začátečníci neměli být zatěžováni? :-)

  • 28. 11. 2017 20:07

    Franta Kučera

    Jinak co se týče těch dalších věcí: během psaní článku jsem zjistil akorát to, že když místo to místo 'x' budu přepisovat nulovým bajtem, tak sice už není vidět, kolik parametrů původně bylo, ale jejich celková délka jde pořád zjistit (délka cmdline se nemění):

    Původně:

    $ cat /proc/$(pidof ./přepis-cli-parametrů)/cmdline | hd
    00000000  2e 2f 70 c5 99 65 70 69  73 2d 63 6c 69 2d 70 61  |./p..epis-cli-pa|
    00000010  72 61 6d 65 74 72 c5 af  00 70 72 76 6e c3 ad 00  |rametr...prvn...|
    00000020  64 72 75 68 c3 bd 00 74  c5 99 65 74 c3 ad 00     |druh...t..et...|
    0000002f

    Po přepsání:

    $ cat /proc/$(pidof ./přepis-cli-parametrů)/cmdline | hd
    00000000  2e 2f 70 c5 99 65 70 69  73 2d 63 6c 69 2d 70 61  |./p..epis-cli-pa|
    00000010  72 61 6d 65 74 72 c5 af  00 00 00 00 00 00 00 00  |rametr..........|
    00000020  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00     |...............|
    0000002f

    Ještě si s tím zkusím trochu pohrát a článek následně rozšířím…