Zdravim,
V jednom z dilu kursu (test) je poukazano na to, ze si mame udelat cestinu do programu, ale vůbec nevím jak na to. Jasne, ze by to slo pomoci char s urcenym vsech ceskych pssmen s diakritikou, a nasledovne dosazovat do textu, ale zda se mi to prilis neprakticke, mate nejaky tip??? Diky...
Fórum › C / C++
Čeština v C++
Oniel7 napsal:
Zdravím,
V jednom z díle kursu (test) je poukázáno na to, že si máme udělat češtinu do programu, ale vůbec nevím jak na to. Jasně, že by to šlo pomocí char s určením všech českých písmen s diakritikou, a následovně dosazovat do textu, ale zdá se mi to příliš nepraktické, máte nějaký tip??? Díky...
Je to zpusobeno kodovanim. Pokud Pracujete na konzoli pod Winech, tak tam se pouziva cp852, kdezto okynka pouzivajki cp1250, cili se to pod timto kodovanim i kompiluje. Resenim pro Win je:
#include <cstdlib>
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, char *argv[])
{
char buf[200];
strcpy(buf, "ěščřžýáíé"); // nejak se to nepovedlo, nemaji tam ty cisla, ale jenom pismenka s diakritikou
CharToOem(buf, buf);
cout << buf << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Ovsem toto reseni je pouze pro Windows, tudiz naprosto neprenositelne(navic pokud budete prekladat pod UNICODE, musite pouzit CharToOemW - vice na msdn). Jinak norma definuje nastaveni locale, ale to se mi absolutne nepovedlo rozchodit, takze to sem ani nebudu psat(leda, ze byste mel zajem). A pokud se to nekomu povedlo rozchodit, byl bych rad, kdyby sem nekdo dal fungujici reseni.
Hmm, tak to je taky ne moc dobré řešení, ale díky za snahu...
Doporučuji přečíst thread české znaky v dev-cpp níže.
Jak už psal kolega Jura, Console používá kódování 866 a win (okýnka) 1250,
metoda CharToOemA() ti 1250 překóduje do 866 a zobrazí se ti to krásně v češtině
např:
#include "stdafx.h"
#include <string.h>
#include <stdio.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
char data[] = "básník, dítě, hrdina, chasník, kapesník, klučina, kroupění, květina, kytice, líce, mění, mlíčko, oháňka, pění, podsítě, přeháňka, rozednění, rým, sítě, sluníčko, svíce, šprým, vinice, víčko, zápisník";
CharToOemA(data,data);
printf("Slova ve slovniku: ");
printf(data);
......
......
......
a pro opak, když budeš tředa načítat z klávesnice češtinu a ukládat jí do souboru, použij metodu:
OemToCharA()
např:
//#include <windows.h>
...
...
char prom_1[20] ;
cout << "Zadej text \n";
cin >> prom_1;
OemToCharA(prom_1,prom_1);
...
...
No, mělo by jít nastavit locale (std knihovna locale):
std::locale cz("Czech");
std::locale::global(cz);
std::cout << "ěščřžýáíéůúňďť";
ale nepodařilo se mi rozchodit vstup z konzole s češtinou tímto způsobem
další možnost je nastavit kódování konzole - nepřesnoné (pouze Windows), musí se ale pak změnit font konzole (např. na Lucida Console), takto funguje i vstup:
SetConsoleCP(1250);
SetConsoleOutputCP(1250);
std::cout << "ěščřžýáíéůúňďť" << std::endl;
std::string str;
std::getline(std::cin, str);
std::cout << str;
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
S.w.i.n.e - čeština — založil ondy13
Čeština v C++ — založil vdolek
MSSQL a cestina — založil Petr sejn
Moderátoři diskuze