Şimdi Ara

C++ Tükçe karakter içeren veri girişi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
10
Cevap
0
Favori
1.081
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar,

    Pek çok kişi için basit bir soru olabilir fakat ben net bir çözüm bulamadım açıkçası. setlocale girdiğim halde kullanıcının adında türkçe karakter var ise, Ömer, Şeyma vs. doğru çıktı vermiyor. diğer tırnak içindeki kısımları doğru yazıyor.

    Tecrübeli arkadaşlardan yardım bekliyorum.


    #include <iostream>
    #include <string>
    #include <locale.h>
    using namespace std;

    int main()
    {
    setlocale(LC_ALL, "Turkish");
    //Kullanıcının adını öğrenip merhaba diye adıyla karşılık vermek istiyoruz
    string isim = "";
    cout << "Programımıza hoşgeldin. \n Adınız Nedir? :";
    getline(cin, isim);
    cout << "Merhaba " << isim << ". Sana nasıl yardımcı olabilirim? \n";
    return 0;


    }







  • Kodu değiştirmeden Mac'te denedim sorunsuz çalıştı. Windows'ta getline(cin,isim) ile isim değişkenine yazarken (veya cout ile isim içeriğini) okurken setlocale'yi dikkate almayıp byte olarak değerlendiriyor olabilir.



    C++ Tükçe karakter içeren veri girişi

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Sağol denediğin ve bilgilendirdiğin için.

    Tahmininde haklı olabilirsin. Windows'ta çözüm için de birisi yardımcı olursa mutlu olacağım.
  • Windows'ta string yerine wide string kullanmak gerekiyor:https://stackoverflow.com/questions/402283/stdwstring-vs-stdstring

    ancak wide string için wstring gibi bir veri tipi yok gibi, wchar_t isim_w[] = L"Ağrı'dan İstanbula"; şeklinde tanımlanıyor. Bu şekilde tanımladığın wide string tipindeki isim_w 'yi de

    cin/cout yerine wcin/wcout ile kullanmak gerekiyor, wcout << isim_w; şeklinde fakat benim son version TDM-GCC kurulu windows xp'de Türkçe karakterler yine bozuk çıktı. Bu iş seni biraz uğraştıracak gibi görünüyor.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Sağol uğraştığın için.

    Bahsettiğin gibi wcout wstring komutlarına döndüğümde iş karmaşıklaşıyor ama çözüm olmuyor yine de. Yalnız şöyle bir durum keşfettim, setlocale satırını koddan çıkarınca isimleri Türkçe doğru karakterlerle getiriyor. Yalnız bu defa da tırnak içindeki metindeki Türkçe harfler bozuk geliyor. Bir yer düzelirse diğer taraf bozuluyor yani.
    Bence çok kolay bir çözümü var ama bulamıyorum gibi.
  • MSDN dokumanlarında C++ dizilerinde Unicode'un nasıl ayarlanacağını açıklayan sayfa var fakat biraz uzundu o yüzden uygulamadım.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • linki paylaşır mısın?
  • Sağolasın.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.