Thread overview
Wchar türünde, Foreach içinde Türkçe sorunsalı
Mar 14, 2022
Salih Dincer
Mar 14, 2022
Salih Dincer
Mar 14, 2022
Ali Çehreli
March 14, 2022

Merhaba,

Şu kodda yer alan çıktıda, wchar içine sığabilecek boyutta Türkçe karakterler içeren bir dizge dizisi (string array), nedense foreach() içinde düzgün aktarılamıyor:

import std.stdio, std.range;

string[] data = [ "Pazartesi"
                , "Salı"
                , "Çarşamba"
                , "Perşembe"
                , "Cuma"
                , "Cumartesi"
                , "Pazar"
                ];

auto toWchar(string str) {
  wchar[] result;
  while(!str.empty) {
	result ~= str.front;
	str.popFront();
  }
  return result;
}

void main()
{
  foreach(date; data)
  {
	wchar[] temp;
    foreach(d; date)
    {
      temp ~= d;	
    }
    temp.write(" -> ");
    date.toWchar().writeln;
  }
}/* ÇIKTISI:
Pazartesi -> Pazartesi
Salı -> Salı
Çarşamba -> Çarşamba
Perşembe -> Perşembe
Cuma -> Cuma
Cumartesi -> Cumartesi
Pazar -> Pazar
*/

Kendimce çözüm buldum ama neticede toWchar() işlevi ile aynı 3 aralık işlevlerini (sırasıyla empty, front, popFront) foreach() de çalıştırmıyor mu? Niye while() döngüsü ile yapılandan farklı sonuçlar alınır ki?

Teşekkürler...

March 14, 2022

On Monday, 14 March 2022 at 14:39:15 UTC, Salih Dincer wrote:

>

[...]
Kendimce çözüm buldum ama neticede toWchar() işlevi ile aynı 3 aralık işlevlerini (sırasıyla empty, front, popFront) foreach() de çalıştırmıyor mu? Niye while() döngüsü ile yapılandan farklı sonuçlar alınır ki?

Sorunun çözümünü buldum...

Meğer türü belirtince düzgün veri aktarılıyormuş:

foreach(wchar date; data)

Bu durumdan varsayılan olarak char aktarılıyor. İlginç!

March 14, 2022
On 3/14/22 7:39 AM, Salih Dincer wrote:

> dizge dizisi (string array), nedense foreach()
> içinde düzgün aktarılamıyor:

Bu, dizge dizisinden bağımsız bir kavram:

import std.stdio;

void main() {
  foreach(c; "Salı") {
    writeln(c);
  }
}

foreach, elemanlara (burada UTF-8) erişir:

S
a
l
\304
\261

Sen wchar dizisine eklerken her eleman farklı wchar olarak ekleniyor.

Ali