دوره‌ها / آموزش برنامه‌نویسی C++ / C++ Output

C++ Output

30 دقیقه Article

خروجی در C++: کار با استریم‌ها 📤✨

در C++ ما از مفهومِ Stream (جریان) برایِ گسیل کردنِ داده‌ها به سمتِ نمایشگر استفاده می‌کنیم. شیء cout (مخفف Character Output) درگاهِ اصلیِ ماست.

۱. عملگرِ درج (Insertion Operator - <<)

این عملگر را مثل یک قیف تصور کنید که داده‌ها را به درونِ cout می‌ریزد.

{code_block('cout << "Hello " << "World!";')}

۲. رفتن به خطِ بعد: \n vs endl

دو راه برایِ ایجادِ خطِ جدید وجود دارد:

  • "\n": یک کاراکترِ کنترلی ساده برایِ خطِ بعد (سریع‌تر).
  • endl: علاوه بر رفتن به خطِ بعد، سیستم را مجاب می‌کند که خروجی را فوراً روی صفحه چاپ کند (Flush بافر).
ترکیبِ خروجی‌ها: شما می‌توانید انواعِ مختلف را در یک خط چاپ کنید: {code_block('cout << "Number: " << 10 << " - Success!";')}

چاپ خروجی بدون namespace:

اگر از using namespace std استفاده نمی‌کنید، باید اینطور بنویسید:

{code_block('std::cout << "Standard Mode";')}
استانداردِ تمیزی: همیشه در انتهایِ پیام‌هایِ خود یک کاراکترِ خطِ بعد بگذارید تا خروجیِ ترمینال با کدِ سیستم قاطی نشود.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی و معماری C++ 🚀⚙️⚡

زبان C++ فقط یک نسخه ارتقا یافته از C نیست؛ بلکه یک هیولای چندوجهی است که قدرت سخت‌افزاری C را با انتزاع‌های سطح بالای مدرن ترکیب می‌کند.

۱. فضای نام (Namespace): خروج از بحران تداخل نام‌ها

در زبان C، اگر دو کتابخانه تابعی با نام print() داشتند، شما دچار مشکل بزرگی می‌شدید. در C++ مفتی به نام Namespace معرفی شد. تمام توابع استاندارد در فضای نام std قرار دارند. این به این معناست که std::cout یعنی از شیء cout که در "قلمرو" استاندارد است استفاده کن.

۲. معماری I/O و امنیت نوع (Type Safety)

در C ما از printf استفاده می‌کردیم که یک تابع Variadic است و خطرات امنیتی زیادی دارد. اما در C++ ما از Streams استفاده می‌کنیم. عملگر << (Insertion Operator) هوشمند است؛ یعنی خودش می‌فهمد شما دارید یک عدد می‌فرستید یا یک متن، بدون اینکه نیاز به %d یا %s باشد.

۳. خط لوله کامپایل (The C++ Compilation Pipeline)

وقتی دکمه Run را می‌زنید، C++ مراحل پیچیده‌ای را طی می‌کند:

  • Preprocessor: هدرها (مثل iostream) را کپی می‌کند.
  • Compiler: کد را به اسمبلی تبدیل می‌کند. در اینجا C++ از تکنیکی به نام Name Mangling استفاده می‌کند تا سربارگذاری توابع (Overloading) ممکن شود.
  • Linker: کدهای شما را به کتابخانه‌های سیستم متصل می‌کند تا فایل اجرایی نهایی ساخته شود.
نکته مهندسی: استفاده از std::endl علاوه بر شکستن خط، بافر را هم خالی (Flush) می‌کند. اگر سرعت بسیار بالا نیاز دارید، از \n استفاده کنید تا سیستم‌عامل هر بار مجبور به تخلیه بافر نشود.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

خروجی چند خطی Easy
سوال تمرین

برنامه‌ای بنویسید که در خط اول Line 1 و در خط دوم Line 2 را چاپ کند. از endl استفاده کنید.

پاسخ تمرین
CPP
#include <iostream>
using namespace std;

int main() {
  cout << "Line 1" << endl;
  cout << "Line 2" << endl;
  return 0;
}

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.