اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

انواع کار کردن با فایل‌ها در C++

+2 امتیاز
2,069 نمایش

در C++ برای خواندن فایل می‌شه با دو نوع باینری و متنی اون رو باز کرد. ۱- فرق اصلی این دو تا چیه؟ و ۲- سرعت پردازش داده تو این دو تا برابره؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده پنجشنبه ۸ فروردین ۱۳۹۲ در C++ توسط prodo  

2 پاسخ

+1 امتیاز

تفاوت باز کردن:
باز کردن فایل در دو حالت هیچ تفاوتی نداره. در هر دو حالت یک هندل به برنامه داده می‌شه که فایل رو دستکاری کنه یا بخونه. چیزی که تفاوت داره نحوه‌ی تفسیر فایل هست.
هنگامی که فایل به صورت دودویی باز می‌شه، مثل یک جریان ساده باهاش برخورد می‌شه که می‌تونیم بایت‌ها و بیت‌هاش رو بخونیم (بایت‌ها به صورت مستقیم و بیت‌ها با خوندن یک بایت).
هنگامی که فایل به صورت متنی باز می‌شه، ما با کاراکترها سروکار داریم (یک کاراکتر ممکنه ۲ بایت باشه نه یه بایت). در این حالت ما در هر گام یک کاراکتر رو از متن می‌خونیم.
تفاوت سرعت پردازش: مطابق نکته‌ی قبل فایل در حالت دودویی و متنی به یک صورت باز می‌شه و بنابراین سرعت پردازش داده تفاوتی نداره. اما چون در یک حالت کاراکتر خونده می‌شه و در حالت دیگه ممکنه یک عدد صحیح ۴ بایتی یا بزرگ‌تر خونده بشه، بنابراین ممکنه خوندن یک داده و یک گام تفات سرعت داشته باشه. اما این به معنی بالاتر بودن سرعت پردازش فایل در حالت دودویی نیست.

در ++C زبانی بسیار کوچک‌تر و پاکیزه‌تر در تلاش برای خروج است. (Bjarne Stroustrup)
پاسخ داده شده شنبه ۲۶ مرداد ۱۳۹۲ توسط برنامه‌نویس  
–1 امتیاز

موردی که به عنوان تفاوت اصلی این دو نوع فایل بخوایم در نظر بگیریم نحوه‌ی ذخیره‌سازی اطلاعات روی این فایل هاست. در یک فایل متنی تمام اطلاعات بصورت رشته‌ای از کاراکترها ذخیره میشه، ولی در یک فایل باینری (دودویی) تمامی اطلاعات بصورت صفر و یک (به همون صورت که در حافظه نهایتا قرار میگیره) یا به عبارتی در مبنای 2 ذخیره میشه.
خب طبیعتا سرعت پردازش یه سری صفر و یک برای کامپایلر خیلی بیشتره تا تجزیه تحلیل رشته‌ها.
به علاوه اینکه در تفاوت این دوفایل سرعت دسترسی خود کاربر هم مطرح هست چراکه فایل باینری قابلیت دسترسی تصادفی داره.

پاسخ داده شده پنجشنبه ۸ فروردین ۱۳۹۲ توسط CPP_Crawler4  

دسترسی تصادفی اینجا چیه؟ به چی دسترسی تصادفی داریم؟ مثلاً خوب اگه بخواهیم بایت ۱۰۰۰ ام رو تو هر کدوم از فایل‌ها بخونیم خب برای هر دو می‌تونیم به سرعت این کار و بکنیم.