การใช้ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การใช้ std::cin และ std::cout อย่างถูกต้อง
- การจัดรูปแบบผลลัพธ์ด้วย iomanip
- การอ่านข้อมูลเข้าอย่างปลอดภัยด้วย getline
- การทำงานกับ std::cerr และ std::clog