ไลบรารีมาตรฐานของ C++ มีความสามารถด้าน Input/Output ที่หลากหลาย ซึ่งเราจะเห็นในบทต่อไป บทนี้จะอธิบายเฉพาะ I/O พื้นฐานและที่ใช้บ่อยที่สุดสำหรับการเขียนโปรแกรม C++
C++ I/O เกิดขึ้นในรูปแบบ streams (สตรีม) ซึ่งเป็นลำดับของไบต์ หากไบต์ไหลจากอุปกรณ์ เช่น คีย์บอร์ด, ไดรฟ์ดิสก์, หรือการเชื่อมต่อเครือข่าย เป็นต้น ไปยังหน่วยความจำหลัก เรียกว่า input operation และหากไบต์ไหลจากหน่วยความจำหลักไปยังอุปกรณ์ เช่น จอภาพ, พิมพ์เตอร์, ไดรฟ์ดิสก์, หรือการเชื่อมต่อเครือข่าย เรียกว่า output operation
The Standard Output Stream (cout)
ออบเจกต์ cout ที่กำหนดไว้ล่วงหน้าเป็นอินสแตนซ์ของคลาส ostream ออบเจกต์ cout ถูกกล่าวว่า "เชื่อมต่อกับ" อุปกรณ์เอาต์พุตมาตรฐาน ซึ่งปกติคือหน้าจอ คำสั่ง cout ใช้ร่วมกับ stream insertion operator ซึ่งเขียนเป็น << (เครื่องหมายน้อยกว่าสองตัว) ตามตัวอย่างด้านล่าง
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
int main() {
char str[] = "Hello C++";
cout << "Value of str is : " << str << endl;
}
ผลลัพธ์
Value of str is : Hello C++
คอมไพเลอร์ C++ ยังระบุประเภทข้อมูลของตัวแปรที่จะแสดงผล และเลือก stream insertion operator ที่เหมาะสมเพื่อแสดงค่า ตัวดำเนินการ << ถูก overload เพื่อแสดงข้อมูลชนิด built-in เช่น integer, float, double, strings และ pointer values
ตัวดำเนินการ insertion << อาจใช้มากกว่าหนึ่งครั้งในคำสั่งเดียว และ endl ใช้เพื่อเพิ่มบรรทัดใหม่ที่ท้ายบรรทัด
The Standard Input Stream (cin)
ออบเจกต์ cin ที่กำหนดไว้ล่วงหน้าเป็นอินสแตนซ์ของคลาส istream ออบเจกต์ cin ถูกกล่าวว่า "เชื่อมต่อกับ" อุปกรณ์อินพุตมาตรฐาน ซึ่งปกติคือคีย์บอร์ด คำสั่ง cin ใช้ร่วมกับ stream extraction operator ซึ่งเขียนเป็น >> (เครื่องหมายมากกว่าสองตัว) ตามตัวอย่างด้านล่าง
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
int main() {
char name[50];
cout << "Please enter your name: ";
cin >> name;
cout << "Your name is: " << name << endl;
}
ผลลัพธ์
Please enter your name: cplusplus Your name is: cplusplus
คอมไพเลอร์ C++ ยังระบุประเภทข้อมูลของค่าที่ป้อนเข้า และเลือก stream extraction operator ที่เหมาะสมเพื่อดึงค่าและเก็บไว้ในตัวแปรที่กำหนด
ตัวดำเนินการ stream extraction >> อาจใช้มากกว่าหนึ่งครั้งในคำสั่งเดียว เพื่อขอข้อมูลมากกว่าหนึ่งรายการ คุณสามารถใช้ได้ดังนี้ -
cin >> name >> age;
สิ่งนี้เทียบเท่ากับคำสั่งสองคำสั่งต่อไปนี้ -
cin >> name; cin >> age;