0Pricing
C++ Academy · บทเรียน

การใช้ std::cin และ std::cout อย่างถูกต้อง

รับและส่งข้อมูลผ่านสตรีมมาตรฐาน พร้อมหลีกเลี่ยงข้อผิดพลาดที่พบบ่อย

การใช้ std::cin และ std::cout อย่างถูกต้อง เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

ส่วนหัว iostream

ทั้ง std::cin และ std::cout เป็นออบเจ็กต์จากส่วนหัว <iostream> โดยทำหน้าที่แทนสตรีมข้อมูลขาเข้าและขาออกมาตรฐานของเทอร์มินัล

ส่งออกข้อมูลด้วย std::cout

ส่งค่าผ่านสตรีมไปยัง std::cout ด้วย << โดยใช้งานได้กับชนิดข้อมูลใด ๆ ที่มีการโอเวอร์โหลด operator<< รวมถึงชนิดข้อมูลพื้นฐานทั้งหมดและ std::string

int age = 30;
std::string name = "Ada";
std::cout << "Name: " << name << ", Age: " << age << "\n";

รับข้อมูลด้วย std::cin

อ่านค่าด้วย std::cin >> variable โดยช่องว่างจะใช้แยกโทเค็น

int age;
std::string name;
std::cout << "Enter name and age: ";
std::cin >> name >> age;
std::cout << name << " is " << age << "\n";

การข้ามช่องว่าง

โดยค่าเริ่มต้น >> จะข้ามช่องว่างนำหน้า ได้แก่ ช่องว่าง แท็บ และบรรทัดใหม่ ก่อนอ่านข้อมูล โดยทั่วไปพฤติกรรมนี้เป็นสิ่งที่ต้องการ แต่ควรระวังเมื่ออ่านอักขระเดี่ยว

อ่านทั้งบรรทัด

std::cin >> name อ่านได้เพียงหนึ่งคำ หากต้องการอ่านบรรทัดที่มีช่องว่าง ให้ใช้ std::getline

std::string line;
std::getline(std::cin, line);
std::cout << "You said: " << line;

ใช้ >> ร่วมกับ getline: ข้อผิดพลาดที่พบบ่อย

หลังจาก std::cin >> n อักขระบรรทัดใหม่จะยังคงอยู่ในบัฟเฟอร์ ทำให้ getline ครั้งถัดไปอ่านได้สตริงว่าง ให้ล้างอักขระบรรทัดใหม่ก่อน

int n;
std::cin >> n;
std::cin.ignore();  // consume the leftover newline
std::string line;
std::getline(std::cin, line);

สถานะของสตรีม

สตรีมมีบิตสถานะ ได้แก่ good, eof, fail และ bad ใช้ if (std::cin) เพื่อตรวจสอบว่าสตรีมยังใช้งานได้หลังการดึงค่าหรือไม่

ตรวจจับ EOF

จุดสิ้นสุดไฟล์ส่งสัญญาณด้วย Ctrl+D บน Unix หรือ Ctrl+Z บน Windows ให้ทำลูปต่อไปขณะที่สตรีมยังอยู่ในสถานะใช้งานได้ เพื่อประมวลผลข้อมูลขาเข้าทั้งหมด

int n;
while (std::cin >> n) {
    std::cout << n * 2 << "\n";
}

เพิ่มความเร็ว I/O สำหรับโค้ดแข่งขัน

ปิดการซิงโครไนซ์กับ C stdio เพื่อให้การอ่านเร็วขึ้นในการเขียนโปรแกรมแข่งขัน และยกเลิกการผูก cin กับ cout ด้วย

std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);

std::endl กับ \n อีกครั้ง

std::endl เขียนบรรทัดใหม่และ ล้าง บัฟเฟอร์ ส่วน "\n" เขียนเฉพาะบรรทัดใหม่เท่านั้น ให้ใช้ "\n" ในลูปเพื่อรักษาประสิทธิภาพให้สูง

ล้างบัฟเฟอร์ด้วยตนเอง

หากต้องการล้างบัฟเฟอร์โดยไม่เขียนบรรทัดใหม่ ให้ใช้ std::flush ซึ่งมีประโยชน์สำหรับตัวบ่งชี้ความคืบหน้า

for (int i = 0; i < 100; ++i) {
    std::cout << "\r" << i << "%" << std::flush;
    // ... work ...
}

ตรวจสอบอย่างรวดเร็ว

std::endl และ "\n" แตกต่างกันอย่างไรในการส่งออกข้อมูล

ทบทวน

ใช้ std::cout ร่วมกับ << เพื่อพิมพ์ข้อมูล และใช้ std::cin ร่วมกับ >> เพื่ออ่านโทเค็น หากต้องการอ่านทั้งบรรทัด ให้ใช้ std::getline และล้างบรรทัดใหม่ที่ค้างอยู่ด้วย cin.ignore() หลังรับข้อมูลตัวเลข

คำถามที่พบบ่อย

บทเรียน “การใช้ std::cin และ std::cout อย่างถูกต้อง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การใช้ std::cin และ std::cout อย่างถูกต้อง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การใช้ std::cin และ std::cout อย่างถูกต้อง”

รับและส่งข้อมูลผ่านสตรีมมาตรฐาน พร้อมหลีกเลี่ยงข้อผิดพลาดที่พบบ่อย คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “การใช้ std::cin และ std::cout อย่างถูกต้อง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม

ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การใช้ std::cin และ std::cout อย่างถูกต้อง
  2. การจัดรูปแบบผลลัพธ์ด้วย iomanip
  3. การอ่านข้อมูลเข้าอย่างปลอดภัยด้วย getline
  4. การทำงานกับ std::cerr และ std::clog
← กลับไปที่ C++ Academy