Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
Derlemek istediğimde çıkan hata :
main.cpp: In function 'BOOL MyFuncLocaleEx(LPWSTR, DWORD, LPARAM)':
main.cpp:12:1: warning: no return statement in function returning non-void [-Wreturn-type]
}
^
main.cpp: At global scope:
main.cpp:14:22: error: '_TCHAR' has not been declared
int _tmain(int argc, _TCHAR* argv[])
^~~~~~
main.cpp: In function 'int _tmain(int, int**)':
main.cpp:16:38: error: 'LOCALE_ALL' was not declared in this scope
EnumSystemLocalesEx(MyFuncLocaleEx, LOCALE_ALL, NULL, NULL);
^~~~~~~~~~
main.cpp:16:38: note: suggested alternative: 'LOCALE_SDATE'
EnumSystemLocalesEx(MyFuncLocaleEx, LOCALE_ALL, NULL, NULL);
^~~~~~~~~~
LOCALE_SDATE
main.cpp:16:2: error: 'EnumSystemLocalesEx' was not declared in this scope
EnumSystemLocalesEx(MyFuncLocaleEx, LOCALE_ALL, NULL, NULL);
^~~~~~~~~~~~~~~~~~~
main.cpp:16:2: note: suggested alternative: 'EnumSystemLocalesW'
EnumSystemLocalesEx(MyFuncLocaleEx, LOCALE_ALL, NULL, NULL);
^~~~~~~~~~~~~~~~~~~
EnumSystemLocalesW
Evet, sorunu çözdüm bu kodlar sayesinde. Metnin önüne getirilen "L" ve U16 geniş karakter dizisi hakkında doğru bilgiler içeren kaynaklar gönderebilir misiniz acaba? İlk attığım koddaki gibi hatalı/eksik bilgiler atan çok kişi olduğuna eminim (Buraya gönderilen cevapları değil, Türkçe karakter kullanımını öğretmeye çalışan web sitelerini kast ediyorum, yanlş anlaşılmasın) ve kaynakların doğruluğunu henüz karşılaştıramıyorum.
Metinlerin başına L eklememizin sebebi bunu wide char'a dönüştürmek için. Normalde dizi tanımlarken char kullanırız lakin char 1 byte'dır ve geniş karakter dizelerini tutmada yetersiz kalır, bunun yerine wchar_t kullanıyoruz bu ise 2byte'dir.
Biz kodu sadece standart output için utf-16 ayarladık yani yazdırdığımız kodu türkçe yazdıracak ancak girdiğimiz kodu da türkçe algılayabilmesi için standart input için de aynı tanımlamayı yapıyoruz.
wide char ile çalışırken string yerine wstring, cin yerine wcin cout yerine de wcout kullanırız. bunlar karakter başına 2 byte ayırır.
Takıldığın yer olursa yazarsın vaktim olunca cevaplarım, kolay gelsin.