České znaky v dev-c++ – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

České znaky v dev-c++ – C / C++ – Fórum – Programujte.comČeské znaky v dev-c++ – C / C++ – Fórum – Programujte.com

 

tomáš polz0
Návštěvník
10. 3. 2006   #1
-
0
-

Jakým způsobem nastavit v tomto programu nebo obecně v C zobrazování českých znaků?
Ve výstupu printf nebo v řetězci .
Jinak to totiž ukazuje takové "nějaké" svoje náhražky.

Nahlásit jako SPAM
IP: ...–
petr0
Newbie
10. 3. 2006   #2
-
0
-

no co jsem si vsiml jak to resi ostatni tak to vypada nasledovne:

//******CESTINA*********************
char aa = 160; //á
char cc = 159; //?
char ss = 231; //š
char yy = 236; //ý
char ee = 130; //é
char eee = 216; //?
char ii = 161; //í
char rr = 253; //?
char zz = 190; //ž
char uu = 163; //ú
//**********************************

//a pak jen pises text nasledovne

cout<<"D"<<eee<<"kuji za V"<<aa<<ss<<" "<<cc<<"asn";

//z tohohle vyleze "Děkuji za Váš čas"

//samozrejmne ty cisla nejsou nahodna jsou z ascii taulky
//http://sorry.vse.cz/~xmard16/ascii/index.htm

Nahlásit jako SPAM
IP: ...–
<b>www.cg4u.ic.cz </b>- forum o grafice pro newbies <b>www.dewonhalo.ic.cz</b> -portfolio
tomáš polz0
Návštěvník
10. 3. 2006   #3
-
0
-

no jo ale tohle je pro c++ ale já používám c, nebo to je jedno a kam bych to napsal

Nahlásit jako SPAM
IP: ...–
Mat?j P?cha0
Super člen
10. 3. 2006   #4
-
0
-

Tak to zkus takhle:
char ii=161;
char rr=253;
printf("tohle je p%csmenko %c",ii,rr);

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
petr0
Newbie
11. 3. 2006   #5
-
0
-

paashi napsal:

Tak to zkus takhle:
char ii=161;
char rr=253;
printf("tohle je p%csmenko %c",ii,rr);


tohle mne taky napadlo ale nakonec se to asi stane neprehlednym :(

Nahlásit jako SPAM
IP: ...–
<b>www.cg4u.ic.cz </b>- forum o grafice pro newbies <b>www.dewonhalo.ic.cz</b> -portfolio
15. 3. 2006   #6
-
0
-

No vono v podstatě stejně jinou možnost nemáš, ale dá se docela jednoduše udělat hlavičkovej soubor ze všema znakama a pak de jenom o to vymyslet si pro ni nějaký přehledný označení.

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
16. 3. 2006   #7
-
0
-

Kdysi jsem si taky nad tim lamal hlavu, ale chtel jsem to udelat pres nastaveni locale. Jenomze to se mi prave pod Dev-C++(resp. gcc, g++) nijak nepovedlo, takze pokud se to pomoci locale nekomu povedlo, tak dejte, prosim, vedet. Dik

Nahlásit jako SPAM
IP: ...–
Adam Streck0
Stálý člen
17. 3. 2006   #8
-
0
-

PRO VŠECHNY:



#include <iostream>
using namespace std;

int main() {
char cc = 159;
char cc2 = -97;
cout << "Stlač" << cc << " enter pro konecn";
cout << "Stlač" << cc2 <<" enter pro konecn";
cout << "Stlač" << " enter pro konecn";

int i;
i = cc;
cout << "cc" <<": "<< cc << endl;
i = cc2;
cout << "cc2" <<": "<< cc << endl;
i = 'ź';
cout << "ź" <<": "<< cc << endl;

cin.get();
return 0;
}


Co se stalo???
1) proč 159 == -97? Typ char má totiž rozmezí od -128 do 127(je ale potřeba počítat se 128), čili 159 - 128 = 21, -128 + 21 = -97. Toto je standartní ochrana proti překročení maxima typu.
2) proč ? == ?? To už je složitější, je tu totiž nekompatibilita.
[url=http://www.labo.cz/mft/matasciit.htm]Toto je tabulka ASCII pro znaky 128 - 255 (odkaz)[/url]
A toto je ta vaše (zkompilujte)


#include <iostream>
using namespace std;

int main() {
unsigned char Uch;
int Ui = 128;
while (Ui < 256) {
Uch = Ui;
cout << Ui << "= " << Uch << endl;
Ui++;
}
cin.get();
return 0;
}


Je to trochu rozdílné že? Proč tabulka kompilátoru není kompatibilní s tabulkou Příkazového řádku nevím, ale pak je jednoduché řešení - pro písmena které chcete si najdete číslo v programu podle kódu výše a pak si vyhledáte znak v tabulce ASCII ten pak vepíšete jako nor. znak.
čili - ź = 159
159 = ź

Nahlásit jako SPAM
IP: ...–
16. 8. 2006   #9
-
0
-

//================================================================
// Ukol c.1 vytvořil Petr Slovák
//================================================================
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <wchar.h>
//----------------------------------------------------------------------------------
using namespace std;
//================================================================
int main(int argc, char* argv[])
{
wchar_t *text[5]= {
L"Když jsem byl malý, tak jsem chtěl",
L"být kosmonautem, poté jsem chtěl",
L"být strojvedoucím, ale jak jsem",
L"dospíval tak jsem přišel na to, že",
L"nejlepší je být politikem."};

setlocale(LC_ALL,"English_Czech.852");

for (int c = 0; c < 5; ++c)
{
wcout << text[c] << endl;
}

cin.get();
return 0;
}

Nahlásit jako SPAM
IP: ...–
Adam Streck0
Stálý člen
16. 8. 2006   #10
-
0
-

ano - jenže tady už není použitý datový typ char, jenž je 256 bitový ale jeho o trochu větší 65536 bitový kolega w_chart - čili rozšířený typ char vytvořený pro ukládání znakové sady Unicode.

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
16. 8. 2006   #11
-
0
-

koron: Pekny pokus, ale je to nefunkcni jak v Dev-C++, tak Codeblocks - oba totiz nemaji asi poradne doimplentovany objekty wcout, atd. Jinak jsi to asi psal v nejakem MS studiu, ze?

Asan: Char ma jen 8 bitu a wchar_t ma 16 bitu

Nahlásit jako SPAM
IP: ...–
17. 8. 2006   #12
-
0
-

Ano pou?il jsem MSVC.?erpal jsem z knihy "Nau? se s?m" od "Herberta Schildta", kde je naps?no :

[b Standardn? ] C++ otv?r? tak? ?irok?(16 bitov?) verze znak? t?cto prud? dat nazvan? wcin,??wcout?,?wcerr?,?wclog, ale my je v t?to knize nebudeme pou??vat.

?

Znamen? to snad, ?e MinGW kompil?tor nen? standardn? C++ ???????

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
17. 8. 2006   #13
-
0
-

koron napsal:

Ano pou?il jsem MSVC.?erpal jsem z knihy "Nau? se s?m" od "Herberta Schildta", kde je naps?no :

[b Standardn? ] C++ otv?r? tak? ?irok?(16 bitov?) verze znak? t?cto prud? dat nazvan? wcin,??wcout?,?wcerr?,?wclog, ale my je v t?to knize nebudeme pou??vat.

?

Znamen? to snad, ?e MinGW kompil?tor nen? standardn? C++ ???????


Ne, to rozhodne ne. Prave naopak bych rekl, ze MinGW dodrzuje stadnard daleko prisneji nez MSVC. A co se tyce objektu wcout, wcin, wcerr, wlog, tak na to jsem jeste nenasel odpoved. Kdyz chcu pouzit nektery z techto objektu musim pridat na samotny uvod makro _GLIBCXX_USE_WCHAR_T sice to kompilator sezere, ale pro zmenu po mne zacne rvat linker. Doposud se mi to nepovedlo rozchodit, ale abych pravdu rekl, nijak to zatim nepotrebuju.

Nahlásit jako SPAM
IP: ...–
Adam Streck0
Stálý člen
17. 8. 2006   #14
-
0
-

Jura_ napsal:
Asan: Char ma jen 8 bitu a wchar_t ma 16 bitu



Omlouvám se, moje chyba - nějak jsem použil převod 1 znak = 1 bit a ani jsem se nad tím nepozastavil. Samozřejmě je char 8 bitový což nabízí 256 možností nastavení. :ehh...nemůžu najít stydlivého smajla:

Nahlásit jako SPAM
IP: ...–
martin
~ Anonymní uživatel
1602 příspěvků
4. 1. 2009   #15
-
0
-

jestli dobře rozumim tak když chci v DEV-C++ pouívat české znaky tak mám smulu?
(potřebuji načíst ze souboru kde jsou české znaky a pak to po zpracování vypsat zase v češtině)

Nahlásit jako SPAM
IP: 89.24.119.–
FreeWind
~ Anonymní uživatel
4 příspěvky
4. 1. 2009   #16
-
0
-

S Dev-C++ ano, protože používá zastaralé gcc/g++ . Doporučuju použít Code::Blocks a nenovější GCC/G++ z MinGW.
Pak stačí zdrojový kód mít v UTF-8 a používát wchar_t nebo parametr pro gcc -fexec-charset=cp852 (pro češtinu)
Dál je potřeba použít správné locale:



#include <stdio.h>
#include <locale.h>
#ifdef WIN32
#define DEFAULT_LOCALE ".852"
#else
#define DEFAULT_LOCALE ".UTF-8"
#endif
int main()
{
setlocale(LC_ALL, DEFAULT_LOCALE);
printf("ěščřžýáíé\n");
return 0;
}

Nahlásit jako SPAM
IP: 85.71.166.–
erno0
Duch
3. 1. 2024   #17
-
0
-

#16 FreeWind
stran Code::Blocks:

pokud někdo použije holou instalaci Code::Blocks s GCC atp., a nemá zdrojový kód v UTF-8 a nepoužívá wchar_t či pro gcc -fexec-charset=cp852, tak pro první prográmky pro konzoli stačí takto: 

#include <iostream>
#include <locale.h>
#define DEFAULT_LOCALE ".1250"
using namespace std;

int main()
{
	setlocale(LC_ALL, DEFAULT_LOCALE);
	cout << "ěščřžýáíé\n";
	return 0;
}

a konzole hned napoprvé rovnou vypíše české znaky v pořádku. Ta patrně jede v cp1250 což platí i pro 64 bitové win 11...

Nahlásit jako SPAM
IP: 85.132.136.–
JerryM0
Věrný člen
4. 1. 2024   #18
-
0
-

https://stackoverflow.com/questions/17584856/getting-a-dev-c-built-program-to-output-unicode-characters-to-the-windows-comm

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:dd34:ceec:db72:70af...–
5. 6. 2024   #19
-
0
-

Kdysi jsem si taky nad tim lamal hlavu, ale chtel jsem to udelat pres nastaveni locale. Jenomze to se mi prave pod Dev-C++(resp. gcc, g++) nijak nepovedlo, takze pokud se to pomoci locale nekomu povedlo, tak dejte, prosim, vedet. Dik

Nahlásit jako SPAM
IP: 115.77.54.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 32 hostů

Podobná vlákna

České znaky ? — založil Lukas

České znaky — založil CommanderZ

DecodeURI české znaky — založil kalašnikov

[DB] - mysql a české znaky — založil micro.21

UTF 8 - české znaky — založil Mudr. Jiří Kopeček

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý