Alıntı (canalpay):
> Örneğin teoride şu çalışması gerekiyor (sonsuz parametre alabiliyor. Ne güzel :-) ) :
> import std.stdio;
>
> void main() {
>
> char a;
> wchar b;
> dchar c;
>
> readf("%s", &a,&b,&c);
> ```
Ama orada her okunan için bir düzen karakteri olması gerekiyor: "%s %s %s". Hata da o durumda çalışmaması zaten.
Alıntı:
> Ayrıca tür dönüşümü yapmadan int türüne bile okuduğumuzu koyabiliyor olmamız lazım.
>
>
> import std.stdio;
void main() {
int a;
int b;
int c;
readf("%d", &a,&b,&c);
Evet, onun da "%d %d %d" ile çalışması gerek. Ve... O çalışıyor! ;)
Hatta, "%s %s %s" kullanınca da çalışıyor. Çünkü "%s"nin anlamı "değişkenin türüne göre oku" demek oluyor.
Ve senin de dediğin gibi, aslında düzen bilgisi kullanmadan da okuyabilmeliyiz. Yani aslında şöyle kullanılabilmeli:
readf(&a, &b, &c);
Çünkü zaten din.readf düzen dizgisi almadan okuyabiliyor.
Alıntı:
> Şuan readf yerine yine std.stdio'da bulunan readln kullanılabilir.
Evet, ama o '\n' karakterini de okuyor. Şöyle bir şey denemiştik galiba:
import std.stdio;
import std.string;
import std.conv;
void main()
{
string line = strip(stdin.readln());
auto i = parse!int(line);
auto d = parse!double(line);
// auto s = parse!string(line); ÇALIŞMIYOR
writeln(i, ' ', d);
}
parse!string çalışmadığı gibi, o programın çalışması için girişin de tek satır olarak gelmesi gerekiyor. Örneğin int'i yazıp Enter basılamıyor. Ama şöyle bir giriş tamam: 42 1.25
Bunların hiçbirisi çözülemeyecek sorunlar değil ama yeni başlayanlara uygun olmadığı açık.
Alıntı:
> conv'deki to şablonuda hatalı sanırım. stringin char'a dönüştürülememesi hata mıdır, yoksa normal midir ?
İlginç bir soru. :) Aklıma gelen sorunlar:
- string'de birden fazla karakter varsa ilkini mi istiyoruz?
- string'de birden fazla karakter varsa, ama örneğin dchar'a dönüştürüyorsak acaba UTF-8'den UTF-32'ye dönüşüm mü istiyoruz?
Programcılıkta bazen en iyi çözüm, kararın zor olduğu durumlarda çözümü programcıya bırakmaktır. :) Bu durumda string'den karaktere dönüşümü yasaklamak, o tür soruları yanıtlamaktan kurtarıyor. Çünkü programcı kendisi seçebilir.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]