PDA

View Full Version : توابع cin.putback() .... d ,و cin.ignore(80,'\n') ....d



hosseinam1370
جمعه 08 فروردین 1393, 23:39 عصر
دوستان نمیتونم این دو تابع و بفهمم چیه.
میشه یکم توضیح بدید .
cin.ignore(80,'\n') ....d
اون 80 و \n منظورش چیه؟ چیکار میکنه؟
cin.putback() ... d
اینم یخورده زحمت بکشید بگید ممنون میشم:خجالت:

hadi0x7c7
شنبه 09 فروردین 1393, 01:31 صبح
شما ورودی برنامتون مثل یه شیر اب میمونه، وقتی که میخوای یه کاراکتر بخونی میای شیر رو باز میکنی، یه دونه میخونی، بعدش میبندی، IO یا بهتر stdin هم همین طوره و واحد خوندنش هم بایت هست یا شایدم کاراکتر، حالا شما فرض کن یه کاراکتر رو خوندی و دیدی اینو نمیخوای(مثلا داری یه عدد رو میخونی کاراکتر به کاراکتر) میرسی به یه غیر عدد، حالا این غیر عدد الان به دردت نمیخوره، میتونی یه جا ذخیرش کنی، یا اصلا میتونی برش گردونی به همون جایی که بود، توی شیر آب که این میشه کار putback
تابع بعدی هم اینطور کار میکنه که یا 80 تا کاراکتر رو نادیده میگیره و میریزه دور یا به کاراکتر '\n'برسه که اینجا متوقف میشه و دیگه ورودی رو دور نمیریزه.

hosseinam1370
شنبه 09 فروردین 1393, 17:43 عصر
ممنون از پاسختون.
فقط در اینجا میشه بگین این تابع چیکار میکنه؟
cin.putback(ch) اینو میگم. char ch;
int n;
while (cin.get(ch))
if (ch >= '1' && ch <= '9') // next character is a digit
{
cin.putback(ch); // put it back so it can be
cin >> n;
break;
}
return n;
}

hadi0x7c7
یک شنبه 10 فروردین 1393, 01:08 صبح
شما احتمالن دارید کتاب PPP رو میخونید؟؟

اینجا میخواد یه عدد بخونه، اول یه کاراکتر میخونه، میبینه که عدد هست، حالا اون کاراکتر رو برمیگردونه به استریم ورودی، و بعد با cin اون عدد رو کامل میخونه، و تابع cin میدونه که اگه متغیرش int بود باید یه int بخونه.

hosseinam1370
یک شنبه 10 فروردین 1393, 08:56 صبح
دارم کتاب الکترونیکی دکتر احمد فراهی رو میخونم.
میخام سی++ رو برای کیوت یاد بگیرم.
توابع رشته ها خیلی گیج کنندست.توی محیط f10 vs نمیشه فهمید که دقیقا اینا چیکار میکنن.گیج کنندست.