আমি স্ট্যান্ডার্ড এই সম্পর্কে পড়া স্মরণ, তাই এখানে যায়:
সি 11 স্ট্যান্ডার্ড দেখুন যা স্ট্যান্ডার্ড স্ট্রিমগুলি কীভাবে আচরণ করে তা নির্ধারণ করে, সি ++ প্রোগ্রাম সিআরটি ইন্টারফেস হিসাবে, সি 11 স্ট্যান্ডার্ডটি এখানে ফ্লাশিং নীতি পরিচালনা করতে হবে।
আইএসও / আইইসি 9899: 201x
7.21.3 §7
প্রোগ্রাম শুরুতে, তিনটি পাঠ্য স্ট্রিম পূর্বনির্ধারিত এবং স্পষ্টভাবে খোলার দরকার নেই - স্ট্যান্ডার্ড ইনপুট (প্রচলিত ইনপুট পড়ার জন্য), স্ট্যান্ডার্ড আউটপুট (প্রচলিত আউটপুট লেখার জন্য), এবং স্ট্যান্ডার্ড ত্রুটি (ডায়াগনস্টিক আউটপুট লেখার জন্য)। শুরুতে খোলার সাথে সাথে স্ট্যান্ডার্ড ত্রুটির স্ট্রিম পুরোপুরি বাফার হয় না; স্ট্যান্ডার্ড কোনও ইন্টারেক্টিভ ডিভাইসকে উল্লেখ না করার জন্য যদি স্ট্রিমটি নির্ধারণ করা যায় তবে স্ট্যান্ডার্ড ইনপুট এবং স্ট্যান্ডার্ড আউটপুট স্ট্রিমগুলি পুরোপুরি বাফার হয়।
7.21.3 §3
যখন একটি স্ট্রিম আনফার্ড করা না হয়, অক্ষরগুলি উত্স থেকে বা গন্তব্যটিতে যত তাড়াতাড়ি সম্ভব উপস্থিত হওয়ার উদ্দেশ্য। অন্যথায় অক্ষরগুলি ব্লক হিসাবে হোস্ট পরিবেশে বা থেকে সংগ্রহ করা বা সংক্রমণ হতে পারে। যখন একটি স্ট্রিম পুরোপুরি বাফার হয়, বাফারগুলি পূর্ণ হয়ে গেলে অক্ষরগুলি হোস্ট পরিবেশে বা একটি ব্লক হিসাবে স্থানান্তরিত করার উদ্দেশ্যে হয়। যখন একটি স্ট্রিম লাইন বাফার হয়, অক্ষরগুলি যখন একটি নতুন-লাইন চরিত্রের মুখোমুখি হয় তখন একটি হোস্ট হিসাবে হোস্ট পরিবেশে বা থেকে একটি ব্লক হিসাবে প্রেরণ করা হয়। তদ্ব্যতীত, বাফার ভরাট হয়ে গেলে, যখন একটি বাফার স্ট্রিমে ইনপুট অনুরোধ করা হয় বা যখন লাইন বাফার স্ট্রিমে ইনপুট অনুরোধ করা হয় যার জন্য হোস্ট পরিবেশ থেকে অক্ষরের সংক্রমণ প্রয়োজন হয় তখন অক্ষরগুলি হোস্ট পরিবেশে একটি ব্লক হিসাবে সঞ্চারিত হয় ।
এর অর্থ হ'ল std::cout
এবং যদি তারা কোনও ইন্টারঅ্যাক্টিভ ডিভাইসটির উল্লেখ করে তবেইstd::cin
সম্পূর্ণ বাফার হয়। অন্য কথায়, stdout যদি একটি টার্মিনালের সাথে সংযুক্ত থাকে তবে আচরণে কোনও পার্থক্য নেই।
তবে, যদি std::cout.sync_with_stdio(false)
বলা হয়, তবে '\n'
ইন্টারেক্টিভ ডিভাইসগুলিতে এমনকি ফ্লাশ সৃষ্টি করবে না। অন্যথায় ফাইলগুলিতে পাইপ না '\n'
করা সমতুল্য std::endl
: সি ++ এফ স্ট্যান্ড :: এন্ডেল এ ।