emadfa
جمعه 06 شهریور 1388, 10:21 صبح
سلام
امروز زمانی که قصد نوشتن یک برنامه را داشتم مشکلی پیش آمد که به نوعی جالب بود ( و البته تعجب بر انگیز) ! و آن این که زمانی که در یک برنامه برای ورودی یک رشته از تابع ()getline استفاده کردم در هنگام اجرای برنامه این تابع اجرا نمی شد. البته دلیل این مساله را هم با مثالی مشابه یافتم! هرگاه قبل از اجرای تابع ()getline ( نه دقیقا خط قبل بلکه حتی خطوط قبل از آن ) حداقل یک تابع cin برای ورودی استفاده شود دیگر تابع ()getline اجرا نمی شود. ( به نوعی که انگار کامپایلر در هنگام کامپایل آن را ignore کرده است! )
از دوستان اگر کسی در مورد علت این مساله و چاره ( چون گاهی نیاز است که از هر دو دستور ورودی در برنامه استفاده کنم! ) آن اطلاعی دارد لطفا کمک کنید.
string partNumber, partDescript;
int quantity, price;
cout << "Enter the product name: ";
cin >> partNumber;
cout << "Enter the description of the product: ";
getline(cin ,partDescript);
cout << "Enter the product quantity: ";
cin >> quantity;
به عنوان مثال در نمونه کد بالا تابع getline اجرا نشده و دو دستور cout بلافاصله بعد از هم اجرا می شوند.
امروز زمانی که قصد نوشتن یک برنامه را داشتم مشکلی پیش آمد که به نوعی جالب بود ( و البته تعجب بر انگیز) ! و آن این که زمانی که در یک برنامه برای ورودی یک رشته از تابع ()getline استفاده کردم در هنگام اجرای برنامه این تابع اجرا نمی شد. البته دلیل این مساله را هم با مثالی مشابه یافتم! هرگاه قبل از اجرای تابع ()getline ( نه دقیقا خط قبل بلکه حتی خطوط قبل از آن ) حداقل یک تابع cin برای ورودی استفاده شود دیگر تابع ()getline اجرا نمی شود. ( به نوعی که انگار کامپایلر در هنگام کامپایل آن را ignore کرده است! )
از دوستان اگر کسی در مورد علت این مساله و چاره ( چون گاهی نیاز است که از هر دو دستور ورودی در برنامه استفاده کنم! ) آن اطلاعی دارد لطفا کمک کنید.
string partNumber, partDescript;
int quantity, price;
cout << "Enter the product name: ";
cin >> partNumber;
cout << "Enter the description of the product: ";
getline(cin ,partDescript);
cout << "Enter the product quantity: ";
cin >> quantity;
به عنوان مثال در نمونه کد بالا تابع getline اجرا نشده و دو دستور cout بلافاصله بعد از هم اجرا می شوند.