Zig Academy · บทเรียน

จัดรูปแบบข้อความด้วย std.fmt

สร้างสตริงด้วยตัวระบุรูปแบบ

บทเรียน 4 จาก 413 ขั้นตอน

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

เหตุผลที่ต้องจัดรูปแบบ

โปรแกรมจริงมักนำค่าต่าง ๆ มาประกอบเป็นข้อความ เช่น ชื่อ จำนวน และราคา Zig จัดการเรื่องนี้ผ่าน std.fmt และภาษาย่อยสำหรับสตริงรูปแบบ

ตัวยึดตำแหน่งในวงเล็บปีกกา

สตริงรูปแบบใช้ {} เป็นตัวยึดตำแหน่ง วงเล็บปีกกาแต่ละคู่จะดึงอาร์กิวเมนต์ถัดไปจากทูเพิลที่คุณส่งมาพร้อมกัน

std.debug.print("x = {}\n", .{42});

อาร์กิวเมนต์อยู่ในทูเพิล

คุณส่งอาร์กิวเมนต์เป็นทูเพิลนิรนาม ซึ่งเขียนเป็น .{ a, b } แม้มีอาร์กิวเมนต์เพียงตัวเดียว ก็ยังต้องอยู่ภายในทูเพิลนี้

std.debug.print("{} {}\n", .{1, 2});

ตัวระบุสำหรับ String

พิมพ์ค่า []const u8 เป็นข้อความด้วย {s} หากใช้ {} เปล่า ๆ ระบบจะพยายามจัดรูปแบบ slice เป็นโครงสร้างที่มีพอยน์เตอร์และความยาวแทน

std.debug.print("{s}\n", .{"hi"});

ฐานของตัวเลข

ควบคุมฐานของจำนวนเต็มด้วยตัวระบุ เช่น {x} สำหรับเลขฐานสิบหก {b} สำหรับเลขฐานสอง และ {o} สำหรับเลขฐานแปด เหมาะอย่างยิ่งสำหรับการแก้ไขข้อผิดพลาดระดับล่าง

std.debug.print("{x}\n", .{255}); // ff

ความกว้างและการเติมช่องว่าง

เติมค่าให้มีความกว้างคงที่ด้วยเครื่องหมายโคลอน เช่น {d:5} วิธีนี้จัดตัวเลขให้อยู่ตรงกันเป็นคอลัมน์ที่อ่านง่าย

std.debug.print("{d:5}\n", .{7});

ความละเอียดของจำนวนทศนิยม

จำกัดจำนวนตำแหน่งทศนิยมด้วยช่องความละเอียด เช่น {d:.2} รูปแบบนี้จะแสดงตัวเลขหลังจุดสองหลักพอดี ทำให้ผลลัพธ์ดูเรียบร้อย

std.debug.print("{d:.2}\n", .{3.14159});

ใช้ Escape กับวงเล็บปีกกา

ต้องการวงเล็บปีกกาตามตัวอักษรในผลลัพธ์ใช่ไหมครับ ให้ใส่ซ้ำสองครั้ง: {{ จะแสดงผลเป็น { หนึ่งตัว และ }} จะแสดงผลเป็น } หนึ่งตัว วิธีนี้ช่วยป้องกันความสับสนกับตัวแทนค่า

std.debug.print("{{x}}\n", .{});

สร้าง String

หากต้องการจัดรูปแบบลงในหน่วยความจำแทน stdout ให้เรียกใช้ std.fmt.allocPrint ฟังก์ชันนี้จะจัดสรรหน่วยความจำและคืนค่า []u8 ใหม่ที่เก็บข้อความของคุณ

const s = try std.fmt.allocPrint(
    alloc, "id={}", .{id});

คืนหน่วยความจำที่จัดสรร

เนื่องจาก allocPrint ใช้ตัวจัดสรรหน่วยความจำ คุณจึงเป็นเจ้าของผลลัพธ์และต้อง free ผลลัพธ์นั้น การใช้ defer ทันทีหลังการเรียกใช้จะช่วยให้การล้างหน่วยความจำเป็นระเบียบ

defer alloc.free(s);

บัฟเฟอร์ขนาดคงที่ด้วย bufPrint

หากไม่ต้องการใช้ heap เลย ให้เขียนลงในอาร์เรย์ของคุณเองด้วย std.fmt.bufPrint ฟังก์ชันนี้จะคืนค่า slice ที่มีข้อมูลและระบุเฉพาะส่วนที่ใช้งานจริง

var buf: [16]u8 = undefined;
const out = try std.fmt.bufPrint(&buf, "{}", .{9});

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

คุณกำลังพิมพ์ค่า []const u8 และต้องการให้แสดงเป็นข้อความที่อ่านได้

สรุป

คุณได้จัดรูปแบบข้อความด้วย std.fmt: ตัวแทนค่า {} และ {s}, ฐาน ความกว้าง และความละเอียด รวมถึง allocPrint และ bufPrint สำหรับสร้างสตริง 🎨

เริ่มต้นได้ฟรี

เรียนรู้ Zig ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

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

บทเรียน “จัดรูปแบบข้อความด้วย std.fmt” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “จัดรูปแบบข้อความด้วย std.fmt”

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

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

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

บทเรียน “จัดรูปแบบข้อความด้วย std.fmt” ใช้เวลานานแค่ไหน

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

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

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

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

  1. สตริงคือ []const u8
  2. ค่าตัวอักษรสตริงและอักขระหลีก
  3. การเปรียบเทียบและค้นหาไบต์
  4. จัดรูปแบบข้อความด้วย std.fmt
← กลับไปที่ Zig Academy