استفاده از getline بعد از cin - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

استفاده از getline بعد از cin

+1 امتیاز

دوستان من هر کار کردم موفق نشدم این کد رو درست کنم

مشکلش چیه چرا نمیزاره name رو وارد کنم ؟

#include <iostream>

using namespace std;
int main()
{
    int id;
    cin>>id;
    string name;
    getline(cin,name);
    cout<<id<<"  "<<name;
}

 

سوال شده اسفند 4, 1392  بوسیله ی Xavi (امتیاز 627)   24 83 110
دوباره تگ گذاری شد اسفند 4, 1392

3 پاسخ

+2 امتیاز
 
بهترین پاسخ
تابع cin بعد از گرفتن ورودی خود به خود یک endl میزاره و از طرفی دقیقا تابع getline منتظر گرفتن همین endl برای خاتمه دادن به گرفتن کارکتر هست ، که باعث میشه تابع getline همون endl ی رو که cin وارد کرده رو بگیره و دیگه منتظر وارد شدن اطلاعات جدید نشه

و برای حل این مشکل میشه که با توابعی مثل همین getline یا getchar اون endl اضافی رو بگیریم قبل از رسیدن به خط getline مورد نظر
پاسخ داده شده اسفند 4, 1392 بوسیله ی Elyas74 (امتیاز 1,144)   6 14 27
انتخاب شد اسفند 7, 1392 بوسیله ی Xavi
سلام endl  میزاره معنی نمیده بهتره بگی '\n' میزاره . \n یک کاراکتره ولی endl یک function با هم فرق دارن .
http://en.cppreference.com/w/cpp/io/manip/endl
برای گرفتن اون \n میشه از cin.ignore استفاده کرد .
اها ،ممنون امید
+2 امتیاز

از این تابع استفاده کن.

(تابع scan رو میگم که بنده اونجا نوشتم. دلیلش اینه که cin اینتری که برای ورود int هست رو نمی گیره و این باعث میشه که اینتر وارد رشته بشه)

پاسخ داده شده اسفند 5, 1392 بوسیله ی asd666 (امتیاز 100)   1 3 10
0 امتیاز

سلام 

دوست عزیز شما برای استفاده از string  ابتدا باید کنتابخانه اش را وارد کنید 

 

پاسخ داده شده آذر 6, 1401 بوسیله ی Ezzatullah_firoozi  
...