อินพุต เอาต์พุต พื้นฐาน

สิ่งที่สำคัญที่สุดในการเขียนโปรแกรมคือ 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 characterRepresents
\aBell (alert)
\bBackspace
\fFormfeed
\nNew line
\rCarriage return
\tHorizontal tab
\vVertical tab
\'Single quotation mark
\"Double quotation mark
\\Backslash
\?Literal question mark
\ oooASCII character in octal notation
\x hhASCII character in hexadecimal notation
\x hhhhUnicode 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