Tam Sürümünü Görmek İçin : ios bitlerinin c karşılıkları
şimdi sorunlarımdan biri :
cin.unsetf(ios::skipws); // bunun zi deki karşılığı nedir?
int sayi;
while (true)
{
cin.unsetf(ios::skipws);
cin >> sayi;
if (sayi < 2) cin.clear(ios::failbit);
if (cin.good())
{
cin.ignore(10, '\n');
break;
}
cin.clear();
cin.ignore(10, '\n');
cout << "Gecersiz girdi !" << endl;
}
gibi bir kodun c karşılığı nedir?
birde malloc(), free() gibi fonksiyonların kullanımına ilişkin bir-iki satırlık örnek verirseniz sevinirim (new ve delete in kullanımını biliyorum ama c karşılığı lazım)...
acehreli
25/05/2005, 22:02
ignore: Girisi temizlemek icin, C'de karakter kalmayana kadar okumaktan baska care yoktur. Bazi ortamlar fflush'i sunarlar ama fflush'in giris akimlariyla kullanilmasi standart degildir.
digerleri: Bilmiyorum ama belki fcntl'dan yola cikarak bir seyler bulunabilir.
malloc/free, new/delete'in tam karsiliklari degildir cunku malloc/free yalin bellek ile ilgilenirler, new/delete nesne kurma/bozma ile...
new/delete'in esdegerleri su C programindaki Dizgi_yeni/Dizgi_sil'in esdegerleri olarak gorulebilirler. (Hata denetimini gozardi ettim...)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct
{
size_t uzunluk;
char * karakterler;
} Dizgi;
/* kurucu islev (constructor) */
void Dizgi_kur(Dizgi * dizgi, char const * deger)
{
dizgi->uzunluk = strlen(deger);
dizgi->karakterler = malloc(dizgi->uzunluk + 1);
strcpy(dizgi->karakterler, deger);
}
/* bozucu islev (destructor) */
void Dizgi_boz(Dizgi * dizgi)
{
free(dizgi->karakterler);
}
/* Dizgi'yi kullanan bir islev */
void Dizgi_goster(Dizgi const * dizgi)
{
printf("karakterler: %s\n", dizgi->karakterler);
}
/* new'un esdegeri */
Dizgi * Dizgi_yeni(char const * deger)
{
Dizgi * dizgi = malloc(sizeof(Dizgi));
Dizgi_kur(dizgi, deger);
return dizgi;
}
/* delete'in esdegeri */
void Dizgi_sil(Dizgi * dizgi)
{
Dizgi_boz(dizgi);
free(dizgi);
}
int main()
{
Dizgi otomatik_dizgi;
Dizgi * dinamik_dizgi = 0;
/* kurma */
Dizgi_kur(&otomatik_dizgi, "otomatik");
dinamik_dizgi = Dizgi_yeni("dinamik");
/* kullanim */
Dizgi_goster(&otomatik_dizgi);
Dizgi_goster(dinamik_dizgi);
/* temizlik */
Dizgi_sil(dinamik_dizgi);
/* bu cagri C++'ta derleyici tarafindan
"otomatik" olarak yapilir */
Dizgi_boz(&otomatik_dizgi);
return 0;
}
Ali
http://www.alegsa.com.ar/Visitas/i43/Malloc%20vs%20new%20for%20pod%20types.php
Burada da benzer bir seyler var - new,malloc ile ilgili - , belki bir goz atmak istersin.
Forum Yazılımı : vBulletin v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.