Şimdi Ara

C++ Alfabetik Sıralama

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
6
Cevap
0
Favori
2.359
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • C++'da TCHAR stringlerini türkçe alfabetik olarak sıralamak için nasıl bir yaklaşımla mümkün?
    (ASCII değerlerinin karşılaştırılması Türkçe karakterleri doğru sıralamıyor.)
    vector kullanıp sort fonksiyonuyla yapılmaya çalışılsa anladığım kadarıyla karşılaştırma yapan fonksiyonu yine kullanıcının yazması gerekiyor.
    Standart bir yolu var mı?



  • std::wstring kullan ve std::sort ile sırala. Bu şekilde olması gerekiyor. Kodu yazdığın editöre dikkat et yanlız. Karakterleri Ansi formatında kaydedersen olmaz.
  • Teşekkürler.
    vector kullanarak sort ile denedim. Ancak Türkçe karakterleri sıralamanın sonuna gönderiyor. Benin sorduğum daha çok "sort"u lokalize etmenin bir standart yolu ya da lokalizasyon ayarına göre sıralama yapabilecek bir başka standart yol olup olmadığıydı. (İnternette bulamadım.)
    (Başka bir yöntem kullandım ve stringleri baştan içerdikleri charları ASCII değerlerine göre değil ama bu ASCII değerlerini bir sıralama konumuna dönüştüren bir array kullanarak hallettim. Ama bu durumda sadece Türkçe için kullanılabiliyor.)
    Saygılarımla.



    < Bu mesaj bu kişi tarafından değiştirildi HiroRew -- 26 Şubat 2014; 8:45:36 >
  • Yaptın mı bilmiyorum. Stringleri kodlama aşamasında yazıyorsan önüne L harfi getirmen gerekiyor.http://msdn.microsoft.com/en-us/library/wt3s3k55.aspx
    Konsoldan giriş yapıyorsan zaten olmaz.
  • Teşekkürler.
    Bir dizinin içerisindeki dosyaların, dizinlerin adlarını alfabetik olarak bir .txt dosyasına listeleyen basit bir uygulama idi yapmak istediğim. Stringleri FinfFirstFile ve FindNextFile ile alıyorum. FindFirstFile ve FindNextFile 8 bitlik char (TCHAR) stringleri döndürüyor. Yani 16 bitlik wchar ile değil, char ile uğraştım. Türkçe alfabeye göre sıralama vector ve sort kullanarak yapılamıyor. Bir önceki mesajımda bahsettiğim yöntemle hallettim. Yöntemin aslı kaşılaştırma için karakterlerin Windows CP 1254 (Türkçe ANSI) kodlarını değil, bu kodlara göre, yani bu kodları index olarak alan bir 256 elemanlı arraydan döndürülen sıralama değerlerini kullanmak. Array, indexi olarak gelen her kod değerine karşı bir sıralama değeri döndürüyor. Ör. A->1, a->1, B->2, C->3, â->1. Eğer dönen değerler farklı ise küçük olan önce geliyor. Ancak eşit ise bu sefer de ANSI kodunu karşılaştırıyor. Ör. A->65, a->97, â->226. Sıralama "AaâBC" oluyor. Tabii ki bu yöntem sadece Türkçe için ve Windows CP 1254 karakterleri ile sınırlı çalışıyor ama işimi gördü şimdilik.
    Saygılarımla.



    < Bu mesaj bu kişi tarafından değiştirildi HiroRew -- 27 Şubat 2014; 8:18:18 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.