PDA

نسخه کامل مشاهده نسخه کامل : تشخیص طول یک رشته در c++



Mohammad_Virus
18-05-2013, 11:49
بازم سلام. توی c++ من رشته ها رو اینطوری تعریف می کنم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا می خوام بدونم بعد از خوندنش از ورودی طول رشته چقدره. میشه از این دو تا تابع استفاده کرد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما یه مشکلی وجود داره. این توابع طول رشته رو محاسبه می کنن ولی اگه جایی از رشته کاراکتر اسپیس وجود داشته باشه از اونجا به بعد رو جزء طول رشته حساب نمی کنن و طول رشته رو تا قبل از کاراکتر اسپیس برمی گردونن. راه حل یا توابع جایگزینی وجود داره؟ میشه به صورت دستی این توابع رو نوشت؟

saeed_136915
18-05-2013, 11:56
بازم سلام. توی c++ من رشته ها رو اینطوری تعریف می کنم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
حالا می خوام بدونم بعد از خوندنش از ورودی طول رشته چقدره. میشه از این دو تا تابع استفاده کرد:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
اما یه مشکلی وجود داره. این توابع طول رشته رو محاسبه می کنن ولی اگه جایی از رشته کاراکتر اسپیس وجود داشته باشه از اونجا به بعد رو جزء طول رشته حساب نمی کنن و طول رشته رو تا قبل از کاراکتر اسپیس برمی گردونن. راه حل یا توابع جایگزینی وجود داره؟ میشه به صورت دستی این توابع رو نوشت؟

سلام
تابع length واسش فرقی نمیکنه داخل رشته اسپیس باشه یا نباشه، طول رشته رو برمیگردونه. شما از کدوم کامپایلر استفاده میکنین؟؟

Mohammad_Virus
19-05-2013, 21:16
سلام
تابع length واسش فرقی نمیکنه داخل رشته اسپیس باشه یا نباشه، طول رشته رو برمیگردونه. شما از کدوم کامپایلر استفاده میکنین؟؟

از vs10 استفاده میکنم. چند بار امتحان کردم. همیشه نتیجه همینه. خودتون یه بار تست کنید
وقتی موقع تعریف، بهش مقدار اولیه میدم این مشکل نیست ولی وقتی از ورودی میخونمش اینطوریه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مثلا این یه برنامه ساده که نوشتم. مقدار gg gggggg رو بهش میدم ولی عدد 2 چاپ میشه

szh_1367
19-05-2013, 22:35
از vs10 استفاده میکنم. چند بار امتحان کردم. همیشه نتیجه همینه. خودتون یه بار تست کنید
وقتی موقع تعریف، بهش مقدار اولیه میدم این مشکل نیست ولی وقتی از ورودی میخونمش اینطوریه


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

مثلا این یه برنامه ساده که نوشتم. مقدار gg gggggg رو بهش میدم ولی عدد 2 چاپ میشه

دلیلش چاپ عدد دو رو خدمت شما عرض میکنم راه حل رو خودتون پیدا کنید :n09:

دستور cin هنگامی که به مقادیر جداکننده همانند space و tab میرسد بقیه رشته رو نادیده میگیره به همین دلیل رشته شما طولی برابر دو خواهد گرفت

شما باید از تابعی برای دریافت استفاده کنید که space و tab و .... رو نیز به عنوان ورودی در نظر بگیرد

saeed_136915
19-05-2013, 22:41
بله همونطور که گفتن مشکل از length نیست و cin کامل نمیخونه. میتونید اینجوری بنویسین:


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

Mohammad_Virus
20-05-2013, 12:19
دمتون گرم :n16:
به این موضوع فکر نکرده بودم :n13:

راه حل من برای این مشکل شبیه سازی دریافت اطلاعات بود. یه تابع درست کرده بودم که کاراکتر به کاراکتر کلید هایی که زده میشه رو می خوند و اونا رو کنار هم می چسبوند و رشته درست می کرد. با دریافت هر کاراکتر، اونو توی صفحه هم چاپ می کرد. حتی عملکرد کلید بک اسپیس رو هم شبیه سازی کرده بودم. هم باید از صفحه یه کاراکتر پاک میشد و هم از رشته یه کاراکتر کم میشد. درسته که راه حل مناسبی نبود ولی موقتا کارم رو راه انداخت و چلنج خوبی هم بود

مرسی دوستان :n20: