PDA

View Full Version : سوال: مشکل در گرفتن رشته از ورودی



abasfar
پنج شنبه 01 دی 1390, 22:44 عصر
سلام
دوستان من برای گرفتن رشته که از جمله فاصله و هرکاراکتری بجز نیولاین باشه از کد زیر استفاده میکنم

getline(cin, str1);

حالا با کد بالا اگر دکمه قبل از دستور بالاش زده باشه دیگه کد را اجرا نمیکنه
باید به این صورت به کار ببرم

getline(cin, str1);
getline(cin, str1);

اولی را برای ذخیره enter
و دومین خط هم برای ذخیره کردن رشته ورودی

من در کل میخوام کد زیر را بنویسم

cout << "Enter new word> ";
getline(cin,NewWord);
cout << "Enter meaning> ";
getline(cin,NewWordMeaning);

اما باید کد زیر را به صورت


cout << "Enter new word> ";
getline(cin,NewWord);
getline(cin,NewWord);
cout << "Enter meaning> ";
getline(cin,NewWordMeaning);

بنویسم تا درست عمل کنه
ایا روشی دیگری هست برای گرفتن رشته یا کد من مشکل داره
دوستان میشه کمک کنید

soorena
پنج شنبه 01 دی 1390, 23:28 عصر
سلام
اين مشکل از اينجا ناشی ميشه که يک کاراکتر خطه جديد (n\) تو بوفر صفحه کليد ميمونه که با getline
نميشه گرفتش پس بايد يک جوری از بين ببريمش.برای اين کار ما ميآييم بوفر صفحه کيليد رو خالی ميکنيم به صورت زير :
(ضمناً اين مشکل از شما نيست زبان برنامه نويسی مشکل رو داره يعنی در اصل اين اصلاً مشکل محسوب نميشه.)

std::cin >> var;
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
ضمناً برای استفاده از اين فرمان بايد limits رو به اول برنامت اضافه کنی.


#include <limits>