Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Hello, world, ali ozbiljno

[es] :: C/C++ programiranje :: Hello, world, ali ozbiljno

Strane: 1 2 3

[ Pregleda: 6554 | Odgovora: 53 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.isp.telekom.rs.



+2790 Profil

icon Hello, world, ali ozbiljno22.08.2023. u 21:06 - pre 8 meseci
Treba mi C++ kod, kao i C kod, oboje za Windows, koji rade sa unicode-om na standardnom ulazu i standardnom izlazu, i koji se ponašaju kao sledeći kod sa ASCII-jem:

Code (cpp):

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string name;

    cout << "Unesi ime : " << flush;
    cin >> name;
    cout << "Zdravo, " << name << "!" << endl;

    return 0;
}
 


Dozvoljeno je koristiti string, wstring, char, wchar_t, cin, wcin, cout, wcout i ostalo iz standarda. Testira se pomoću cmd.exe. Dakle, ako on tretira stdin i stdout kao UTF-16 kodirane, onda tako.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
2a02:a212:92bb:4780:ad44:2bb..



+7177 Profil

icon Re: Hello, world, ali ozbiljno22.08.2023. u 22:13 - pre 8 meseci
Evo ti za UTF-16:

Code:

#include <cstring>
#include <iostream>
#include <fcntl.h>
#include <io.h>

using namespace std;

int wmain(int argc, wchar_t *argv[])
{
  _setmode(_fileno(stdin), _O_U16TEXT);
  _setmode(_fileno(stdout), _O_U16TEXT);

  wstring name;

  wcout << "Unesi ime : " << flush;
  wcin >> name;
  wcout << "Zdravo, " << name << "!" << endl;

  return 0;
}

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.isp.telekom.rs.



+2790 Profil

icon Re: Hello, world, ali ozbiljno23.08.2023. u 16:02 - pre 8 meseci
Hvala! Ovo radi. Naravno, unicode literale pišem sa prefiksom "L", odnosno kao

L"Kako se zoveš? "
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.isp.telekom.rs.



+2790 Profil

icon Re: Hello, world, ali ozbiljno23.08.2023. u 21:54 - pre 8 meseci
Ako se koristi MinGW kompajler, onda linkeru treba zadati -municode. Za MSVC i LLVM ne treba.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..2bb:4780:90ce:e120:b0d2:d973



+7177 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 13:45 - pre 8 meseci
Uzgred, ovo je samo polovicno resenje - na zalost, Windows konzola i dalje (koliko znam) ne podrzava unos podataka koje pokriva UTF-8 komplet (probaj sa nekim "Emoji"-ma) i sl, pa cak i insistiranje na UTF-8 i eksplicidno podesavanje konzolne kodne strane nece resiti problem.

Ovaj polovicni UTF-16 donekle resava problem bar kada su 'nasi' karakteri u pitanju, ali puno srece sa necim egzoticnijim.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

kosmopolita
Balkan

Član broj: 257864
Poruke: 123



+21 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 14:56 - pre 8 meseci
Ima Character Map sa kojim moze da se vidi koje karaktere podrzava izabrani font.
WIN 10 u konzoli ima Consolas font, kao default.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..2bb:4780:90ce:e120:b0d2:d973



+7177 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 15:13 - pre 8 meseci
Ne vredi font nista, jednostavno console host ne podrzava komplet UTF-8 kao ulaz:

https://github.com/vezel-dev/cathode/issues/68

PowerShell i WSL (naravno) ne pate od toga, ali Win32 konzola je i dalje falicna. Probaj da uneses npr 🎁 - cak ni chcp 65001 ne pomaze.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

kosmopolita
Balkan

Član broj: 257864
Poruke: 123



+21 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 15:47 - pre 8 meseci
Dobro, nisam napisao da se sa Character Map mogu videti utf-8, nego da se mogu videti karakteri koje ima taj font.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..2bb:4780:90ce:e120:b0d2:d973



+7177 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 15:51 - pre 8 meseci
To je OK, ali sve i da font ima karaktere (ima), Windows Console Host ti ih nece dati kao input.

Eksperiment, startuj PowerShell - ukucaj 🎁, moze.

Onda startuj tvoju konzolnu aplikaciju koja prima ulaz sa konzole, sve i da je nastelovana UTF-8 kodna strana, ulaz ce biti - djubre.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

kosmopolita
Balkan

Član broj: 257864
Poruke: 123



+21 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 16:04 - pre 8 meseci
Ako probam paste u PS daje dva znaka pitanja.

Kad se pogleda u properties vidi se da imam 852 (OEM - Latin 1) i u PS i u konzoli.

Ako moze PS da prikaza taj znak onda moze jer koristi neku drugu kodnu stranu.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..2bb:4780:90ce:e120:b0d2:d973



+7177 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 16:10 - pre 8 meseci
Namesti UTF-8 - vidim da imas Windows 8, mislim da je to tad bilo jos eksperimentalno, negde u regional settings.



U Windows konzoli:

Code:

chcp 65001


Ili programski: SetConsoleOutputCP(CP_UTF8);

Ali, kao sto rekoh, to utice samo na izlaz, ne na ulaz.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Prikačeni fajlovi
 
Odgovor na temu

kosmopolita
Balkan

Član broj: 257864
Poruke: 123



+21 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 16:20 - pre 8 meseci
Kad se promeni kodna strana PS sa paste i dalje daje znak pitanja.

Inace win 8 prijaljuje IE web komponenta koju koristim a koristim u win 10.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..2bb:4780:90ce:e120:b0d2:d973



+7177 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 16:28 - pre 8 meseci
Mislim da su tek od nekog Win10 builda ukljucili to a da ne bude eksperimentalno - ako ti bas treba UTF-8 u PS-u probaj na Google-u da nadjes kako da se ukljuci.

chcp radi samo za console host (command prompt) - i to samo za ispis ako nekako uspes da mu poturis UTF-8 bafer (nece ici preko clipboarda).
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

kosmopolita
Balkan

Član broj: 257864
Poruke: 123



+21 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 16:35 - pre 8 meseci
Posle chcp 65001 U PS kaze da je UTF-8 kodna strana.

Inace sam ja ranije radio sa kodnim stranama a sada se samo prisecam.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..92bb:4780:4803:5faf:abf:a69b



+7177 Profil

icon Re: Hello, world, ali ozbiljno24.08.2023. u 17:55 - pre 8 meseci
https://helpcenter.nshift.com/...dows-10-Unicode-UTF-8-encoding



E sad ne znam koliko je to bilo 'mature' u Win10... mada na tome su radili 10+ godina.

Na zalost, kad je klasicna konzola u pitanju, ocigledno ne jos zadovoljavajuce. Mada nije da ih ne razumem, sama tema je komplikovana + Win32 API je osinje gnezdo sto se toga tice (imali smo vec temu o tome, istorija je dugacka i na zalost ucinjeno je par gresaka u dizajnu koje je jako tesko ispraviti ako se zeli ocuvati kompatibilnost).

Mada, opet, novi terminal je kud i kamo bolji... ali iskreno, od kad postoji WSL2, pogotovu na Win11 gde je jako dobro i graficki integrisan, mislim... kome jos Win32 konzola treba, kad imas native bash ili koji god Linux shell zelis.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
Prikačeni fajlovi
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.dynamic.isp.telekom.rs.



+2790 Profil

icon Re: Hello, world, ali ozbiljno25.08.2023. u 20:49 - pre 8 meseci
Meni je bitno da moj program bude OK. Ako MS-ov nije OK, to nije do mene. Dakle, ako radi savršeno sa savršenom konzolom, onda sam ja zadovoljan.

Jedno od rešenja je da isporučiš korisniku svoju konzolu. Osnovnu konzolu nije teško napraviti.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

kosmopolita
Balkan

Član broj: 257864
Poruke: 123



+21 Profil

icon Re: Hello, world, ali ozbiljno25.08.2023. u 23:10 - pre 8 meseci
Nije bitno ali cini mi se da je Dimkovic pomesao mene sa pokretacem teme :)

Da dodam (ne zbog sebe nego zbog teme) da sam poceo da programiram kad je postojao samo DOS operativni sistem.
DOS je imao mogucnost grafike na nacin da se koriste karakteri iste velicine.
Zbog toga konzola koristi odredjen skup fontova koji imaju istu velicinu karaktera.

Zato to nije mana nego jednostavno pravilo koje je ostalo od DOS-a.
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..92bb:4780:482:5456:38b2:e855



+7177 Profil

icon Re: Hello, world, ali ozbiljno25.08.2023. u 23:13 - pre 8 meseci
Pricas o monospace fontovima, ali ne vidim kakve veze monospace fontovi imaju sa Nedeljkovim pitanjem koje se tice Unicode podrske.

Monospace fontovi savrseno podrzavaju Unicode karaktere.

DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Hello, world, ali ozbiljno26.08.2023. u 10:55 - pre 8 meseci
Pre izvesnog vremena sam napiao C programče za "šišanje" latinice, odnosno fajl u 1250 kodnom rasporedu sam morao da očistim od naših znakova.

Naravno, napisao dotični program na Linuxu, testirao, pa onda kompajlirao migw-om za Win. Kaspersky na to vrisne da mi exe ima virus, pa ja šta ću, skinem Pelles C da njime kompajliram Win verziju.
Ispade, program radi i na Win ali pravi duplo veći fajl. Iz nekog razloga, Win smatra da mora da upiše karaktere kao UTF-16. Morao sam da izmenim program da čita i piše fajl u binary modu.

Da čovek poludi sa Windowsovim kerefekama. Na normalnim operativnim sistemima fajl je stream of bytes, a Win mora da zabiberi neko svoje tumačenje...
 
Odgovor na temu

Ivan Dimkovic

Administrator
Član broj: 13
Poruke: 16687
..92bb:4780:482:5456:38b2:e855



+7177 Profil

icon Re: Hello, world, ali ozbiljno26.08.2023. u 11:07 - pre 8 meseci
Visual Studio vec duze vreme podrzava Clang, unutar samog IDE-a - preporucio bih to kao resenje umesto mingw-a.

Win32 API, bar u poslednjih par godina (Windows 10 1903 i kasnije), podrzava UTF-8 u ANSI verzijama API-ja (xxxA pozivi) - ogranicenje je konzolni podsistem koji i dalje nije u stanju da cita stdin u propisnom UTF-8 formatu, ali citanje / pisanje fajlova nije problem.

Stavi ovo kao .exe manifest da ne bi bilo problema:

Code:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity type="win32" name="..." version="6.0.0.0"/>
  <application>
    <windowsSettings>
      <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
    </windowsSettings>
  </application>
</assembly>


Naravno, ako koristis Win32 API-je, aplikaciju kompajliras kao ANSI, u suprotnom je default "wide char" API (xxxW).

Vise detalja: https://learn.microsoft.com/en...globalizing/use-utf8-code-page

Mislim da MSVC kompajler ima /utf-8 opciju da uradi posao za tebe, mada ne koristim doticni kompajler godinama pa nisam koristio tu opciju.

https://learn.microsoft.com/en...er-sets-to-utf-8?view=msvc-170

+ Ako ciljna grupa koristi Windows 10 i ima kontrolu nad instaliranim opcijama, mozes jednostavno da ostanes u Linux okruzenju a na Windowsu izvrsavas proces iz WSL konzole. WSL2 je cist Linux pa nemas problem sa kompatibilnoscu. Ja se vise uopste ne zamaram kompajliranjem npr. OSS stvari u Win32 (osim ako eksplicitno ne podrzavaju Win32), daleko je jednostavnije i brze otvoriti WSL2 shell i poterati make.
DigiCortex (ex. SpikeFun) - Cortical Neural Network Simulator:
http://www.digicortex.net/node/1 Videos: http://www.digicortex.net/node/17 Gallery: http://www.digicortex.net/node/25
PowerMonkey - Redyce CPU Power Waste and gain performance! - https://github.com/psyq321/PowerMonkey
 
Odgovor na temu

[es] :: C/C++ programiranje :: Hello, world, ali ozbiljno

Strane: 1 2 3

[ Pregleda: 6554 | Odgovora: 53 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.