#include <QtCore/QCoreApplication> #include <QTextStream> #include <QTextCodec> #include <QLocale> #include <QFile> QTextStream cin(stdin); QTextStream cout(stdout); int main(int argc, char *argv[]) { //QLocale::setDefault(QLocale(QLocale::Turkish, QLocale::Turkey)); //Qt5 versiyonunda aşağıdaki koda gereksinim kalmadı. //QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QCoreApplication a(argc, argv); QFile data("testOutput.txt"); data.open( QIODevice::WriteOnly); QTextStream dataFile(&data); dataFile.setCodec("UTF-8"); QString bir=QString("Bu Cümleyi Büyültmek İstiyorum."); QString turkce="ğüşiöçı"; QString Bturkce="ĞÜŞİÖÇI"; /* Aşağıda QString sınıfının fonksiyonlarını kullanarak * karakter büyültme yapıyoruz. Türkçe karakterlerdeki büyültme problemini * çözmek için bu karakterleri ayrı bir şekilde büyülttük. Diğer karakterler ise * QChar::toUpper() fonksiyonu ile büyültüldü. * NOT: BU TERCİH EDİLMESİ GEREKEN BİR YOL DEĞİLDİR. */ bool found=false; for(int i=0;i<bir.length();i++) { QChar birK= bir.at(i); if(birK.isLetter()) { for(int i=0;i<Bturkce.length();i++) { if(birK==turkce[i]) { dataFile << Bturkce[i]; found=true; break; } } if(found==false) dataFile << birK.toUpper(); found=false; }else{ dataFile << birK; } } dataFile<<"\r\n\r\n"; /* *QString::toUpper() fonksiyonu kullanılarak tüm karakterler büyültüldü. *Fakat bu çevrimi yaparken doğru lokasyonu algılayamadığı için "i" karakterini *yanlış bir şekilde "I" şeklinde büyültüyor. */ dataFile<<bir.toUpper()<<endl; /* *Doğru yöntem aşağıdaki şekilde doğru lokasyon ayarlanarak büyütlme yapmaktır. */ QLocale turkish=QLocale(QLocale::Turkish,QLocale::Turkey); //Windows 7 ortamında bu kod türkçeye öz harfleri büyültürken problem //yaşıyor neden? i harfini I olarak büyültüyor. dataFile<<"\r\n\r\n"<<turkish.toUpper(bir)<<endl; dataFile<<"\r\n"<<QString("Ayarlı Dil : ")<<turkish.nativeLanguageName(); dataFile<<"\r\n"<<turkish.toUpper(QString("ğüşiçö")); data.close(); cout<<"Program başarı ile sonlandı."<<endl; return a.exec(); }
Çarşamba, 22 Mayıs 2013 00:00
QString, QLocale ve kendi yöntemimize karakter büyültme
Yazan Ufuk Yıldırım
Son Ekledikleri: Ufuk Yıldırım
Yorum Ekle
Gerekli olan (*) işaretli alanlara gerekli bilgileri girdiğinizden emin olun. HTML kod izni yoktur.