อินพุต เอาต์พุต พื้นฐาน
สิ่งที่สำคัญที่สุดในการเขียนโปรแกรมคือ Input และ Output ของโปรแกรม เพราะว่าทุกๆ โปรแกรมจำเป็นต้องติดต่อกับผู้ใช้ ในภาษา C++ จะใช้ Stream เพื่อดำเนินการกับ Input และ Output ของโปรแกรม ซึ่ง Stream นั้นเป็นไลบรารี่มาตรฐานของภาษา C++ เราใช้ cin
stream สำหรับการ Input และ cout
stream สำหรับ Output และเพื่อใช้โดยไม่ต้องมี std
prefix เราจำเป็นต้องใช้คำสั่งนี้ในโปรแกรมของเรา
using namespace std;
ในบทนี้ เราจะพูดถึงเพียงแค่การ Input และ Output แบบพื้นฐานเท่านั้น ซึ่งจะเป็นการรับค่าและการแสดงผล ในการรับค่านั้นจะเป็นการรับค่าจากทางคีย์บอร์ด และการแสดงผลจะเป็นการแสดงผลใน Console ที่หน้าจอของคอมพิวเตอร์
Standard output
โดยทั่วไป การแสดงผลมักจะถูกแสดงผลออกทางหน้าจอของคอมพิวเตอร์ cout
เป็น Stream object ที่เราสามารถแสดงผลตัวอักษรใดๆ ออกทางจอภาพได้ นี่เป็นตัวอย่างของโปรแกรมที่มีการแสดงผลลัพธ์ออกมา
#include <iostream>
using namespace std;
int main()
{
int myNumber = 5;
cout << "This is my sentence." << endl;
cout << 1234 << endl;
cout << myNumber << endl;
return 0;
}
จากตัวอย่าง เราได้แสดงตัวอักษรออกทางจอภาพในบรรทัดแรก ต่อมาเป็นตัวเลข และสุดท้ายเราได้แสดงค่าของตัวแปร myNumber
ดังนั้น เราสามารถใช้คำสั่ง cout
เพื่อแสดงผลตัวอักษร ตัวแปรหรือสิ่งต่างๆ ออกทางจอภาพได้ ในการใช้งานคำสั่ง cout
จะตามด้วยเครื่องหมายน้อยกว่าสองอัน <<
และตามด้วยข้อความที่จะแสดง คุณสามารถใส่ได้หลายพารามิเตอร์โดยการคั่นด้วยเครื่องหมายดังกล่าวไปเรื่อยๆ และข้างล่างนี้เป็นผลลัพธ์ของโปรแกรม
This is my sentence.
1234
5
ในโปรแกรม คุณได้เห็นโค้ดบางส่วนจากในบทก่อนหน้าแล้ว เช่น endl
มันเป็นค่าคงที่จากไลบรารี่มาตรฐาน std
ซึ่งหมายถึงการขึ้นบรรทัดใหม่ ซึ่งเหมือนกับการใช้ \n
เพื่อขึ้นบรรทัดใหม่โดยตรง
Standard input
แค่การแสดงผลนั้นยังไม่เพียงพอ ในภาษา C++ ยังมี cin
stream object ซึ่งทำให้เราสามารถที่จะรับค่าจากคีย์บอร์ดได้ เรามักจะใช้คำสั่ง cin
กับตัวแปร มาดูตัวอย่างการใช้
#include <iostream>
#include <string>
using namespace std;
int main()
{
int age;
string name;
cout << "What is your name: ";
cin >> name; // get name from keyboard
cout << "Enter you age: ";
cin >> age; // get age from keyboard
cout << "Hi " << name ;
cout << ", your age is " << age ;
return 0;
}
หลังจากโปรแกรมรัน Input อันแรกคือ cin >> name
มันจะรอรับค่าจากคีย์บอร์ดจนกว่าเราจะกดปุ่ม Enter และนี่หมายถึงการรับค่าเสร็จสิ้น และข้อมูลจะถูกบันทึกลงในตัวแปร name
สำหรับ Input อันที่สองโปรแกรมที่จะทำแบบเดียวกัน แต่มันจะบันทึกข้อมูลลองในตัวแปร age
แทน ในการรับค่าคุณจะสังเกตุได้ว่าเราใช้เครื่องหมายมากกว่าสองอันแทน >>
ข้างล่างนี้เป็นผลลัพธ์ของโปรแกรม
What is your name: Marcus
Enter you age: 18
Hi Marcus, your age is 18.
คุณยังสามารถกดปุ่ม Space ได้สำหรับการรับค่าถัดไป ใน cin
steam object การรับค่าจะจบเมื่อมันพบกับ Enter key (Carriage return) หรือ Space key เพื่อเป็นการสิ้นสุดการรับค่าจาก Keyboard stream ต่อไปมาดูตัวอย่างของโปรแกรมหาค่าที่มากที่สุดจากตัวเลขสามตัวที่รับค่าจากคีย์บอร์ด
#include <iostream>
using namespace std;
int main()
{
int a, b, c;
cout << "Enter value of a, b, c: ";
cin >> a >> b >> c;
if (a > b && a > c)
{
cout << "a is the greatest." << endl;
}
else if (b > c)
{
cout << "b is the greatest." << endl;
}
else
{
cout << "c is the greatest." << endl;
}
return 0;
}
เพื่อให้คุณเข้าใจในการรับค่าในภาษา C++ มากขึ้น นี่เป็นตัวอย่างของโปรแกรมในการรับค่าของตัวเลขจำนวนสามตัวทางคีย์บอร์ด คำสั่ง cin
สามารถรับค่าได้ในครั้งเดียวโดยการคั่นด้วยเครื่องหมาย >>
ไปเรื่อยๆ ในตัวอย่างเราได้รับค่าตัวแปร a
b
และ c
ในคำสั่งเดียวกัน
Enter value of a, b, c: 2
5
3
b is the greatest.
Enter value of a, b, c: 2 5 3
b is the greatest.
นี่เป็นผลลัพธ์การทำงานของโปรแกรม คุณจะเห็นว่าเราได้รันโปรแกรมสองครั้งแต่ละครั้งจะรับค่าตัวเลขจำนวนสามตัว ในการรับค่าในภาษา C++ นั้นเราสามารถใช้ Whitespace หรือ Enter ในการสิ้นสุดการรับค่าแต่ละค่าได้ ซึ่งได้ผลลัพธ์เหมือนกัน
การรับค่าทั้งบรรทัดด้วยฟังก์ชัน getline()
ในตัวอย่างก่อนหน้า แสดงให้คุณเห็นว่าเราสามารถใช้ Whitespace ในการสิ้นสุดการรับค่าของแต่ละตัวแปร อย่างไรก็ตามคำสั่ง cin
ยังให้เราสามารถรับค่า Space key ได้โดยการใช้ฟังก์ชัน getline()
ซึ่งมากับไลบรารี่ของ String นี่เป็นตัวอย่าง มาดูตัวอย่างของโปรแกรม
#include <iostream>
using namespace std;
int main()
{
string text;
cout << "Enter message: ";
getline(cin, text);
cout << "You >> " << text;
return 0;
}
ในตัวอย่าง เป็นการรับค่าข้อความทั้งบรรทัดและนำมาใส่ตัวแปร string text
ฟังก์ชันนี้ให้เราสามารถรับค่าของ Space key ได้ เช่น ประโยค หรือคำหลายคำที่คั่นด้วยช่องว่าง โดยค่าของ Space จะเป็นเหมือนตัวอักษรว่างปล่าวตัวหนึ่งเหมือนกับตัวอักษรตัวอื่นๆ ดังนั้นเราจึงต้องกด Enter สำหรับการจบการรับค่าเท่านั้น พารามิเตอร์ของฟังก์ชันนั้นมีสองตัวคือ ตัวแรกจะเป็น cin
steam object และตัวที่สองเป็นตัวแปรที่เราต้องการเก็บค่าไว้
Type something: I'm learning C++ on marcuscode.com.
You: I'm learning C++ on marcuscode.com.
นี่เป็นผลลัพธ์การทำงานของโปรแกรมสำหรับการรับค่าทั้งบรรทัดในภาษา C++
Escape characters
ตัวอักษรที่ขึ้นต้นด้วยเครื่องหมาย Slash (\
) และตามด้วยตัวอักษรหนึ่งตัวนั้นเรียกว่า Escape characters มันเป็นตัวอักษรที่ใช้ในการแสดงการขึ้นบรรทัดใหม่ เครื่องหมาย Quote หรือตัวอักษรที่สำคัญอื่นๆ ที่ไม่สามารถแสดงได้ในแบบปกติ หรือว่าถูกใช้ในการกำหนดไวยากรณ์ของภาษา เช่น เครื่องหมาย "
จะใช้กับ String literal ดังนั้น ในการใช้ตัวอักษรเหล่านี้คุณจำเป็นต้องทำการ Escape มันด้วยเครื่องหมาย \
เสมอ
นี่เป็นรายการของ Escape characters ในภาษา C++
Escape character | Represents |
---|---|
\a | Bell (alert) |
\b | Backspace |
\f | Formfeed |
\n | New line |
\r | Carriage return |
\t | Horizontal tab |
\v | Vertical tab |
\' | Single quotation mark |
\" | Double quotation mark |
\\ | Backslash |
\? | Literal question mark |
\ ooo | ASCII character in octal notation |
\x hh | ASCII character in hexadecimal notation |
\x hhhh | Unicode character in hexadecimal notation. |
ต่อไปมาดูตัวอย่างการใช้งาน Escape character ในภาษา C++ ซึ่งเป็นโปรแกรมเกี่ยวกับการแสดงผล
#include <iostream>
using namespace std;
int main()
{
cout << "\"The most popular language in 2016\".\n";
cout << "#\tLanguage\tYear\n";
cout << "1\tC\t1972\n";
cout << "2\tJava\t1995\n";
cout << "3\tPython\t1991\n";
cout << "4\tC++\t1983\n";
cout << "5\tR\t1993\n";
return 0;
}
ในตัวอย่าง เป็นการใช้งาน Escape character สำหรับแสดงตัวอักษรต่างๆ เราได้แสดงตัวอักษร Quote ด้วย \"
แสดง Tab ด้วย \t
และการขึ้นบรรทัดใหม่ด้วย \n
"The most popular language in 2016".
# Language Year
1 C 1972
2 Java 1995
3 Python 1991
4 C++ 1983
5 R 1993
นี่เป็นผลลัพธ์การทำงานของโปรแกรม
ในบทนี้ เราได้ครอบคุมพื้นฐานของการรับค่าและการแสดงผลในภาษา C++ เราได้พูดถึงการแสดงผลโดยการใช้ cout
steam object และการรับค่าด้วย cin
steam object ซึ่งเป็นสิ่งที่สำคัญในการเขียนโปรแกรมที่มีการติดต่อกับผู้ใช้เพื่อรับข้อมูลและแสดงผล และเรายังให้คุณทราบถึงวิธีการรับค่า String ทีละบรรทัดโดยการใช้ฟังก์ชัน getline()
และ Escape characters