2011/10/02

C++ - iostream

สวัสดีครับ ไม่ได้มาเขียนบล็อกตั้งนาน ผมขอพักเรื่อง Object Pascal ไปก่อนนะครับ
วันนี้ขอพูดถึงภาษา C++ แต่จะขอไม่พูดถึงไวยากรณ์พื้นฐานของภาษา C
เช่น if ใช้ยังไง switch case เขียนยังไง while, do while, for เขียนยังไง
ผมจะคิดว่า ทุกคนในที่นี้มีความรู้ภาษา C มาพอสมควรแล้ว

โพสนี้ผมจะพูดเรื่อง iostream ว่ามันคืออะไร ?

ขอนำภาพจาก Wikipedia มาใช้นะครับ

(ref: http://en.wikipedia.org/wiki/Standard_streams)

ปกติแล้วในภาษา C เราจะใช้คำสั่ง printf ที่อยู่ใน stdio.h (Standard Input Output) ในการแสดงข้อความ
ใน Standard Stream จะมี stream อยู่ 3 ตัว คือ stdin (Standard Input), stdout (Standard Output), stderr (Standard Error)

ในภาษา C++ จะเรียก stream ทั้ง 3 แบบว่า cin, cout, cerr
ซึ่ง stream ทั้ง 3 อยู่ใน namespace ที่ชื่อว่า std
วิธีการใช้เราจะต้องประกาศ header ที่ชื่อว่า iostream ก่อน โดยการใช้ #include 

#include <iostream>

เวลาเราจะเรียกใช้ เราต้องเขียน namespace ข้างหน้า
และเราจะใช้ bit shifts ในการส่งค่าให้กับ stream
เช่น ในภาษา C เราเขียนว่า
    printf("Hello World.\n");
เราสามารถใช้ iostream ได้เป็น
    std::cout << "Hello World.\n";
หรือจะใช้ endl (End Line) แทน \n ได้
    std::cout << "Hello World." << std::endl;
นอกจากนี้เรายังสามารถใส่ตัวแปรลงไปได้เลย
    int a = 10;
    std::cout << a << std::endl;

สำหรับการใช้ cin รับค่า
ปกติในภาษา C เราจะใช้ scanf รับค่า
เราต้องรู้ว่า %s %d %c %f มันคืออะไร
แต่ถ้าใช้ cin เราไม่จำเป็นที่จะต้องใช้ เพราะเราสามารถใส่ค่าลงในตัวแปรได้เลย
    int a;
    std::cin >> a;
ถ้าต้องการรับหลายค่าก็แค่
    int a, b, c;
    std::cin >> a >> b >> c;

ส่วน cerr จะไม่ขอพูดถึง

บางคนอาจจะคิดว่า std::cout มันยาวกว่า printf ต้องพิมพ์เยอะเสียเวลา
เราสามารถประกาศให้โปรแกรมของเรารู้จักกับเจ้า std เลย
และเวลาเรียกใช้เราไม่ต้องพิมพ์ std:: อีก
โดยการประกาศ using namespace std; ไว้ข้างบน
ลองดูตัวอย่าง

#include <iostream>


using namespace std;


int main()
{
    cout << "Input an Integer: ";
    int a;
    cin >> a;
    cout << a << " x " << a << " = " << a * a << endl;
    return 0;
}

หวังว่าการใช้ iostream จะช่วยให้เขียนโปรแกรมง่ายขึ้นนะครับ

No comments:

Post a Comment