সি ++ streamoff
প্রকারটি (ফাইল) স্ট্রিমের মধ্যে একটি অফসেট উপস্থাপন করতে ব্যবহার করে এবং [স্ট্রিম.টাইপস] এ নিম্নলিখিত হিসাবে সংজ্ঞায়িত করা হয়:
using streamoff = implementation-defined ;
অপারেটিং সিস্টেমের সর্বাধিক সম্ভাব্য ফাইল আকার উপস্থাপনের জন্য টাইপ স্ট্রিমোফ পর্যাপ্ত আকারের স্বাক্ষরিত মৌলিক অবিচ্ছেদ্য ধরণের একের সমার্থক শব্দ। 287)
287) সাধারণত দীর্ঘ দীর্ঘ।
এটি উপলব্ধি করে কারণ এটি বড় ফাইলগুলির মধ্যে অনুসন্ধানের অনুমতি দেয় (ব্যবহারের বিপরীতে long
, যা কেবল 32 বিট প্রশস্ত হতে পারে)।
[filebuf.virtual] basic_filebuf
একটি ফাইলের মধ্যে অনুসন্ধানের ক্রিয়াকে নিম্নলিখিত হিসাবে সংজ্ঞায়িত করেছে :
pos_type seekoff(off_type off, ios_base::seekdir way, ios_base::openmode which = ios_base::in | ios_base::out) override;
off_type
এর সমতুল্য streamoff
, দেখুন [iostreams.limits.pos]। তবে, স্ট্যান্ডার্ডটি তখন ফাংশনের প্রভাবগুলি ব্যাখ্যা করতে চলেছে। আমি একেবারে শেষ বাক্যে বিরক্ত হয়েছি, যার জন্য এই কলটি দরকার fseek
:
প্রভাবসমূহ :
width
বোঝাতে দিনa_codecvt.encoding()
। যদিis_open() == false
, বাoff != 0 && width <= 0
, তাহলে পজিশনিং অপারেশন ব্যর্থ হয়। অন্যথায়, যদিway != basic_ios::cur
বাoff != 0
, এবং যদি শেষ অপারেশন আউটপুট ছিল, তবে আউটপুট ক্রম আপডেট করুন এবং কোনও আনশিফ্ট ক্রম লিখুন। এরপরে, নতুন অবস্থানের সন্ধান করুন: যদিwidth > 0
, কল করুনfseek(file, width * off, whence)
, অন্যথায় কল করুনfseek(file, 0, whence)
।
fseek
একটি long
পরামিতি গ্রহণ করে । যদি off_type
এবং streamoff
সংজ্ঞায়িত করা হয় long long
(মান হিসাবে প্রস্তাবিত), এটি long
কল করার সময় ডাউন রূপান্তর হতে পারে fseek(file, width * off, whence)
(বাগগুলি সনাক্তকরণে সম্ভাব্য শক্তির দিকে পরিচালিত করে)। এটি streamoff
প্রথমে প্রকারটি প্রবর্তনের পুরো যুক্তিটিকে প্রশ্নবিদ্ধ করে ।
এই ইচ্ছাকৃত বা মান একটি ত্রুটি?
seekoff
প্রয়োজনীয় ব্যবহারের মতো বলে মনে হচ্ছে না fseek
। বরং, (সম্ভবতঃ পরিচিত?) আচরণটি fseek
কী seekoff
করছে তা বোঝাতে ব্যবহৃত হয় ।
fseek
এটি প্রভাব ফেলবে যতক্ষণ না এটি একই প্রভাবের সাথে কিছু করে। তবে এর fseek
চেয়ে কম LONG_MIN
বা তার চেয়ে বেশি কোনও অফসেটের LONG_MAX
কোনও প্রভাব নেই, সুতরাং ব্যাখ্যাটি সর্বোপরি অসম্পূর্ণ, কমপক্ষে এর streamoff
চেয়ে আরও প্রশস্ততর বাস্তবায়নের জন্য long
।