To hybridfusion: Ona se ta přípona mazat podle mně nemusí. A opravte mně jestli se pletu ale pomocí #include se dá vkládat jakýkoli soubor tedy i normální texťák.
Fórum › C / C++
Tip k češtině v C++
To Matrix17:Tak tak.. #include vlastne akoby tam pastol obsah zo suboru(akehokolvek, ked tam date trebarz aj *.moja_koncovka ;-) *.h. *.hh, *.cpp, *c su take zauzivane standardy.Taktiez aj *.c ci *.cpp mozu mat akukolvek koncovku.Prikladom je napriklad ProC ktore ma koncovku *.pc
Mam první malou otázku: K čemu je dobrý to
#if !defined() a potom #define
? Co by se stalo kdyby to tam nebylo? Funguje to stejně ne?
A druhá větší otázka :) : Řešil sem jak udělat češtinu v případě, že načítám znaky z externího souboru. Udělal sem to takhle, ale je to delší a dělá to bordel v kódu. Nešlo by to ošetřit nějak líp?
soubor.get(*ch);
if (*ch=='á') { *ch=160; } else if (*ch=='é') { *ch=130; } else
if (*ch=='ě') { *ch=216; } else if (*ch=='í') { *ch=161; } else
if (*ch=='ó') { *ch=162; } else if (*ch=='ů') { *ch=133; } else
if (*ch=='ú') { *ch=163; } else if (*ch=='Ú') { *ch=233; } else
if (*ch=='ž') { *ch=167; } else if (*ch=='Ž') { *ch=166; } else
if (*ch=='ť') { *ch=156; } else if (*ch=='č') { *ch=159; } else
if (*ch=='Č') { *ch=172; } else if (*ch=='Ď') { *ch=210; } else
if (*ch=='ď') { *ch=212; } else if (*ch=='Š') { *ch=230; } else
if (*ch=='š') { *ch=231; } else if (*ch=='ý') { *ch=236; } else
if (*ch=='ř') { *ch=253; } else if (*ch=='Ř') { *ch=252; } else
if (*ch=='Ň') { *ch=213; } else if (*ch=='ň') { *ch=229; }
Protože bez tohohle to nepsalo češtinu ale ty blbosti, třeba místo "á" to psalo "ß" apod.Co by se stalo kdyby to tam nebylo? Funguje to stejně ne?
pokud vim jo, ale muze to delat bordel, treba pokud dvakrat includnete hlavickovy soubor a tak...
je to delší a dělá to bordel v kódu. Nešlo by to ošetřit nějak líp?
pokud vim tak ne, znaky nejsou za sebou, takze asi ne, ale budu sledovat jestli sem nenapise nekdo povolanejsi ;-)
mozno blbost ale.. urob si na to nejaku funkciu a macro.. napriklad:
#define CVT(a,b) if (ch == a) return b;
char convert_char(const char ch)
{
CVT('á', 160); CVT('é', 130);
//atd atd..
}
//alebo
#define CVT2(a, b) case a: return b;
char convert_char2(const char ch)
{
switch(ch) {
CVT2('á', 160); CVT2('é', 130);
//atd atd..
}
}
// potom uz len
char ch;
soubor.get(*ch);
ch = convert_char(ch);
P.S: netestoval som, moze byt chybycka
Tak tomu nerozumím, ale tuším že to má co dočinění s kódováním. Když jsem udělal načítání textu ze souboru, a výpis na obrazovku, tak mi nefungovala čeština. Udělal jsem to tedy následujícím způsobem.
soubor.get(*ch);
if (*ch=='á') { *ch=160; } else if (*ch=='é') { *ch=130; } else
if (*ch=='ě') { *ch=216; } else if (*ch=='í') { *ch=161; } else
if (*ch=='ó') { *ch=162; } else if (*ch=='ů') { *ch=133; } else
if (*ch=='ú') { *ch=163; } else if (*ch=='Ú') { *ch=233; } else
if (*ch=='ž') { *ch=167; } else if (*ch=='Ž') { *ch=166; } else
if (*ch=='ť') { *ch=156; } else if (*ch=='č') { *ch=159; } else
if (*ch=='Č') { *ch=172; } else if (*ch=='Ď') { *ch=210; } else
if (*ch=='ď') { *ch=212; } else if (*ch=='Š') { *ch=230; } else
if (*ch=='š') { *ch=231; } else if (*ch=='ý') { *ch=236; } else
if (*ch=='ř') { *ch=253; } else if (*ch=='Ř') { *ch=252; } else
if (*ch=='Ň') { *ch=213; } else if (*ch=='ň') { *ch=229; }
Když to ale nevypisuju na obrazovku ale přímo do jinýho souboru, tak s timhle ta čeština zase nejde takže to musim dělat bez toho. Pročpak to? To má systém windows jiný kódování, než uložené soubory na disku (dával jsem to do .txt).
Skuste tohle
#include <windows.h>
#include <iostream>
#include <string>
using namespace std;
string StringObsahujiciCeskeZnaky (char *Txt)
{
string Ret = "";
if (Txt && *Txt) {
int Delka = strlen(Txt) + 2;
char *Buf = new char [Delka];
if (Buf) {
ZeroMemory(Buf,Delka);
memcpy(Buf,Txt,Delka - 2);
CharToOem(Buf,Buf);
Ret = Buf;
delete [] Buf;
};
};
return Ret;
};
int main (void)
{
cout << "Zdary" << endl;
cout << StringObsahujiciCeskeZnaky("Jak se máš? ěščřžýáíé") << endl;
cin.get();
return 0;
};
Mělo by vám to jít.
To tomik512: Fakčí jak má, super ... teď hledám převodník ze stringu na přechroustatelnou URL (nahrazení speciálních znaků včetně českých na %HHH) - urlencode fci ale nic mi zatím nefakčí :) kdybys byl tak hodnej a něco sem hodil ;-)
zdar, nejsem žádnej velkej programátor, ale pár drobných věcí si umím udělat. Potřeboval bych helfnout se čtením řetězců v češtině z externího souboru. Všechny rady jsou OK, ale nějak se mi nedaří načíst např. slovo "až" v ANSI, vypsat na obrazovku a opětovně ho zapsat do jiného souboru.
dík za pomoc
to agent:
http://forum.builder.cz/read.php?123,2069160
ale momentalne maji vypadek
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
Intercept theorem v češtině? — založil Dominika
Vypsání data s měsícem v češtině. — založil polopes
OVOpet Village Life - nová android hra kompletně v češtině — založil OVOpet
Tip na algoritmus — založil JanK
Tip na zajímavé algoritmy — založil beachboy
Moderátoři diskuze