انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید


توزیع گنو/لینوکس اوبونتو ۲۰ ساله شد 🎉

نویسنده موضوع: بیت های حالت در زبان سی++  (دفعات بازدید: 1284 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین سید مسعود امامیان

  • Hero Member
  • *
  • ارسال: 951
بیت های حالت در زبان سی++
« : 18 بهمن 1391، 08:01 ب‌ظ »
سلام دوستان

بیت های حالت (مثلا ios::binary) توی کیوت کار نمی کنن ؟! یجا خوندم چون در حالت های نوشتاری گنو/لینوکس تفاوتی وجود نداره
پس نیازی به بیت های حالت نیست !

خب اگر کسی بخواد محتویات رو به حالت باینری در بیاره چاره چیست ؟!
به عمل کار برآید     به سخندانی نیست . . .

آفلاین majidkamali1370

  • Hero Member
  • *
  • ارسال: 928
  • جنسیت : پسر
پاسخ : بیت های حالت در زبان سی++
« پاسخ #1 : 18 بهمن 1391، 10:37 ب‌ظ »
من خیلی یلد نیستم و نمیدونم ios::binary دقیقا چه تاثیری داره ولی توی حالت متنی، مثلا توی فایل نوشته ۱۲۳، c++ میاد این ۱۲۳ رو به عدد تبدیل میکنه و میریزه توی یه int یا به ۳ تا کاراکتر تبدیل میکنه و میریزه توی سه کاراکتر (در سه مرحله) یعنی با خود ِ اون نوشته ها کار داره. مثلا وقتی شما توی برنامه میگی عدد 2 رو بریز توی فایل، کاراکتری میریزه توی فایل، یعنی وقتی فایل رو باز کنی، توش نوشته 2 ولی توی حالت binary وقتی میگی 10 رو بریز توی فایل، یه کاراکتر با کد عددی ۱۰ میسازه و میریزه توی فایل، که میشه یه خط جدید.

البته فکر کنم اینکه قبل از ریختن توی فایل اون اطلاعات رو به چی cast کنی، تاثیر داشته باشه. مثلا اگه به char تبدیل کنی، میشه همون حالت binary
OutputFile << (char)65;خروجی این فایل میشه حرف a.

امیدوارم درست گفته باشم.
Ubuntu 14.04 LTS 64-bit - unity

آفلاین سید مسعود امامیان

  • Hero Member
  • *
  • ارسال: 951
پاسخ : بیت های حالت در زبان سی++
« پاسخ #2 : 18 بهمن 1391، 11:19 ب‌ظ »
خب یه سوال به سوال اضافه شد !

میشه گفت به حالت باینری سرعت پردازش بیشتر میشه ! خب فرض کنید یک کلاس بزرگ به همراه کلاس های مشتق شده اش داشته باشیم
به اون روشی که شما گفتین نمیشه که اشیاء رو به صورت باینری ذخیره کرد ! از طرفی چون حجم اطلاعات زیاد هست ذخیره اطلاعات به
صورت باینری بهتر خواهد بود .
یه تاثیری هم روی کاراکترهای خط جدید مثل n/ داره ! دقیق نمی دونم ((:
به عمل کار برآید     به سخندانی نیست . . .

آفلاین majidkamali1370

  • Hero Member
  • *
  • ارسال: 928
  • جنسیت : پسر
پاسخ : بیت های حالت در زبان سی++
« پاسخ #3 : 18 بهمن 1391، 11:57 ب‌ظ »
نقل‌قول
میشه گفت به حالت باینری سرعت پردازش بیشتر میشه
دقیقا درست میفرمایید. همچنین حجم اطلاعات پایین میاد.

راهی که میشه اشیا رو به صورت باینری ذخیره کرد اینه:
OutPutFile.write(reinterpret_cast<const char*>(MyClassObject), sizeof(MyClass));یه روش دیگه هم اینه:
]OutputFile.write( ( const char* )this, sizeof( MyClass ) );
توی روش دوم reinterpret_cast نداره. با هر کدوم راحتترید کار کنید.
البته دقت داشته باشید که در روش دوم this یه اشاره گر هست. اگه شیء بود، یه & بزارید قبلش.
« آخرین ویرایش: 19 بهمن 1391، 12:02 ق‌ظ توسط majidkamali1370 »
Ubuntu 14.04 LTS 64-bit - unity