Zdar, hladal som cez google ale nikde som nic nenasiel. Takze ako otvorit subor ktory sa vola napr. ľščť.txt
Vopred vdaka.
Fórum › C / C++
Otvorenie suboru s diakritikou v nazve
tu je moj kod ktory by mal teoreticky fungovat
int main(){
char haha[]= "šč";
CharToOem(haha,haha);
ofstream heh;
heh.open(haha);
}
ale subor ktory sa vytvori ma nazov çź. Nie je problem skor vo funkcii .open() ktora zrejme nezvlada diakritiku?
entity
Nie je problem skor vo funkcii .open() ktora zrejme nezvlada diakritiku?
Zodpověz si otázku: Jak je řetězec reprezentován v paměti? Až si to ujasníš, náhle se ozve můj hlas: A jak má kurňa open() vědět, v jakém kódování je ta sekvence bytů uložena?
J=jednotky a nuly. Tazke ako mam open() povedat v akom kodovani je paska ulozena?bukaj_001 napsal:
entity
Nie je problem skor vo funkcii .open() ktora zrejme nezvlada diakritiku?
Zodpověz si otázku: Jak je řetězec reprezentován v paměti? Až si to ujasníš, náhle se ozve můj hlas: A jak má kurňa open() vědět, v jakém kódování je ta sekvence bytů uložena?
Skusal som na google pohladat ako previest ANSII do utf-8 ale nepodarilo sa mi najst nic co by vyhovovalo. Jedina moznost ktoru som nasiel je znaky pretypovat na int ale netusim ako by sa potom pomocou niekolkych int-ov dal otvorit subor kedze open() berie len char alebo *char neviem urcite ktore. Takze, ako by ste vy otvorili subor na citanie s nazvom šč?
Asi na to budeš muset jít nějak přes win API.
Ale jak tu už psal KIIV, je nějaký důvod k tomu, aby v programu bylo natvrdo nějaké jméno souboru? Jedině u názvu nějakého konfiguračního souboru. A ten snad diakritiku nepotřebuje.
PS: K čemu je v tomto fóru dobré tlačítko "Náhled", když k tomu, co jsem napsal se už nedá vrátit? Nehledě na to, že to žádný náhled nezobrazí. Funguje to asi tak dobře, jako přihlášení. Chvilku jsem přihlášen, chvilku ne, pak musím při vkládání příspěvku zodpovědět ty otázky pro neregistrovaného uživatele a příspěvek je pak vložen pod mým jménem, nebo nemusím odpovídat na žádné otázky, ale příspěvek je vložen anonymě... Funguje to tu nějak divně.
Tak jsem se teda obětoval, přebootoval jsem do Windows. ZKusil jsem program
#include <iostream>
#include <fstream>
#include <locale>
int main()
{
setlocale(LC_ALL, "");
std::ifstream in("šč", std::ios::in);
std::cout << in.rdbuf();
}
Zdroják mám uložen v UTF8. Funguje to s GCC 3.4.něco a s Visual studiem 2008. GCC nepotřebuje ani to setlocale.Hmm. Spravil som vsetko(viac-menej) ako mas ty ale pri pokuse precitat nieco zo suboru mi program spadne
#include <iostream>
#include <fstream>
#include <locale>
using namespace std;
int main(){
setlocale(LC_ALL, "");
char name[]= "šè";
ifstream ifs;
ifs.open(name);
char txt[12];
ifs >> txt;
cout << txt;
cin.get();
cin.get();
}
teda na prikaze ifs >> txt;
Když už čtu řetězec, tak bych ho zkusil načítat do std::string. Pokud to chceš jenom dostat na stdout, tak to dělá to cout << ifs.rdbuf()
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
Otvorenie suboru z VS. — založil zonda
Otvorenie súboru — založil tito100
Otvorenie súboru cez GUI — založil michal
Riešenie pre otvorenie txt súboru 1x od updatu — založil Martin
Nazov objektu v nazve premennej — založil marioff
Moderátoři diskuze