abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 20:44 | Zajímavý článek

    Jean-Baptiste Kempf na svém blogu představil novou verzi 9.0 "Lei" kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    dnes 20:11 | Komunita

    Richard Hughes oznámil, že službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzoruje také společnost NVIDIA.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | Zajímavý software

    Edvard Rejthar na blogu zaměstnanců CZ.NIC představil svou aplikaci SlideRshow (GitHub). Funguje jako prohlížeč fotek, ale i jako jejich organizér a prezentátor. Neinstaluje se, běží přímo v prohlížeči. Bez serveru. Offline.

    Ladislav Hagara | Komentářů: 0
    dnes 11:44 | Nová verze

    Kermit, tj. protokol pro přenos souborů, vznikl před 45 lety. Při této příležitosti byla po 15 letech od vydání poslední stabilní verze 9.0.302 vydána nová stabilní verze 11 implementace C-Kermit. S podporou IPv6.

    Ladislav Hagara | Komentářů: 0
    dnes 11:11 | Zajímavý článek

    První verze konverzního nástroje Pandoc byla vydána před 20 lety. Jeho autor John MacFarlane při tomto výročí rekapituluje jednotlivé etapy vývoje a přidávání nových funkcí – rozšíření nejen Markdownu a podporu mnoha dalších formátů.

    |🇵🇸 | Komentářů: 0
    dnes 00:55 | Pozvánky

    Srpen přinesl nejen další spalující vedro, ale také Virtuální Bastlírnu s neméně žhavými novinkami. Využijte tedy předpovědi na deštivý čtvrteční večer a od 20:00 se připojte online k tomuto neformálnímu setkání kutilů, techniků a vědců, kde se strahovskými bastlíři proberete nejzajímavější věci, na které jste narazili za poslední měsíc. Pokud jde o novinky, řeč zcela jistě přijde na systém INDX pro tiskárny Průša, který na konci

    … více »
    bkralik | Komentářů: 0
    včera 17:22 | Zajímavý článek

    Firma T-Mobile blokovala „dezinformační web“ AC24 bez toho, aniž by k tomu měla závazný pokyn orgánů veřejné moci. Píše to ve svém rozsudku Městský soud v Praze, který po čtyřech letech uzavřel kauzu blokace zmíněného webu. Operátor musí uhradit škodu ve výši 35 tisíc korun. Advokát společnosti T-Mobile se snažil i u odvolacího senátu argumentovat tím, že firma jednala v dobré víře, když na stránky omezila přístup poté, co ji k tomu vyzvalo

    … více »
    Ladislav Hagara | Komentářů: 19
    včera 16:33 | IT novinky

    Padla obžaloba v bitcoinové kauze. Státní zástupkyně chce pro Blažka 6,5 roku vězení, pro Titze 8 let.

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | IT novinky Ladislav Hagara | Komentářů: 3
    včera 14:22 | Komunita

    Na GitHubu byl publikován seznam 55 kritických bezpečnostních chyb v SQLite s přiřazenými CVE čísly. JFrog Security informuje, že se jedná jenom o AI slop, části kódu na které CVE odkazují, v daných verzích vůbec neexistují. Upozorňuje také, že čísla CVE jsou přiřazována bez ověřování.

    Ladislav Hagara | Komentářů: 5
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (18%)
     (30%)
     (6%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2321 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: C++ zjistit počet znaků ve stringu (UTF8)

    28.2.2012 09:13 Smíšek
    C++ zjistit počet znaků ve stringu (UTF8)
    Přečteno: 1281×

    Ahoj, jak už název říká, potřeboval bych v c++ zjistit ze zadaného stringu počet znaků. Funkce .size() i .length() mi dávají špatné odpovědi při použití diakritiky (ěščřžýáíé,..), počítám s tím že znaky s diakritikou v UTF8 zabírají 2bajty, bez nich 1bajt. Nemáte nějakou odzkoušenou funkci která mi to správně spočítá. Chvíli už hledám, ale na nic kloudného jsem nenarazil. Použitý kompilátor: g++ (Debian 4.6.2-16) 4.6.2


    Řešení dotazu:


    Odpovědi

    Řešení 2× (Vašek Lorenc, Vojtěch Horký)
    28.2.2012 09:48 Kit
    Rozbalit Rozbalit vše Re: C++ zjistit počet znaků ve stringu (UTF8)
    28.2.2012 10:04 Smíšek
    Rozbalit Rozbalit vše Re: C++ zjistit počet znaků ve stringu (UTF8)
    Díky :-) funguje parádně
    28.2.2012 14:02 Sten
    Rozbalit Rozbalit vše Re: C++ zjistit počet znaků ve stringu (UTF8)
    Dovoluju si upozornit, že nejde o počet znaků, ale o počet code pointů. Sice se u českého uživatele většinou nesetkáte s tím, že by jeden znak byl zapsán více code pointy, ale pokud jde o ochranu vstupu, může někdo podle napsat č místo jednoho code pointu U+010D dvěma code pointy U+0063 U+030C, a pak vám ta funkce vrátí, že tam jsou znaky dva, i když je jeden. Zjistit skutečný počet znaků je ale kvůli tomu v Unicode velmi obtížné a musel byste na to použít třeba knihovnu ICU.
    28.2.2012 14:37 Ivan
    Rozbalit Rozbalit vše Re: C++ zjistit počet znaků ve stringu (UTF8)
    Dik za tip. Tohle jsem netusil. Hadam ze to co popisujes se muze stat pokud uzivatel pouzije Ctrl+C Ctrl+V z PDF.
    29.2.2012 15:05 Sten
    Rozbalit Rozbalit vše Re: C++ zjistit počet znaků ve stringu (UTF8)
    U PDF to IMO nehrozí, ale třeba MacOS X používá interně (např. na souborovém systému) ty znaky dekomponované (rozložené), i když pro komunikaci by je měl zase složit.
    29.2.2012 10:47 lofcek
    Rozbalit Rozbalit vše Re: C++ zjistit počet znaků ve stringu (UTF8)
    A ja viem este o dalsich "bonusoch" vyplyvajucich z pouzivania Unicode (nie len utf-8).

    1. Ja uplne jedno, ci mam retazec ulozeny ako "wchar_t*", alebo utf-8 char* - aj tak vo funkciach ako printf sa sirka pocita v znakoch utf-8. Cize printf("%.4ls\n", L"ažšČľňť"); pochopi ako 4 utf-8 znaky - cize: a = 1 znak ž = 2 znaky š = 2 znaky, to by uz nevyslo cele .. takze z neho sa uz neypise nic.

    2. Znaky v korejcine/japoncine a cinstine sice zaberaju len jeden wchar_t, ale v terminale zaberaju sirku 2 znakov. Potom, ked sme robili korejsku lokalizaciu produktu, tak sme zistili, ze existuje wcwidth a wcswidth.
    pavlix avatar 29.2.2012 16:02 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: C++ zjistit počet znaků ve stringu (UTF8)
    A ja viem este o dalsich "bonusoch" vyplyvajucich z pouzivania Unicode (nie len utf-8).
    Možná jsi zmaten tím, že v začátcích Unicode existovalo kódování Unicode, které se jmenovalo stejně jako znaková sada Unicode. Ale to už strašně moc dlouho neplatí.

    Unicode má hodně přes sto tisíc definovaných znaků a teoreticky cca dvě miliardy, takže na uložení obecného codepointu do 16bit číselné proměnné zapomeň. Standard definuje 31-bitové codepointy, aby byly totožné v signed i unsigned 32-bit proměnných.

    UTF-8 je jedno z možných kódování (formátů serializace) znakové sady Unicode. Znaková sada je v tomhle případě abstraktní věc, seznam codepointů (obvykle) pro jednotlivé znaky.

    S tou korejštinou dobrá poznámka.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.