std.fmtでテキストをフォーマットする
フォーマット指定子で文字列を組み立てます。
「std.fmtでテキストをフォーマットする」はCoddyKit上の無料Zig Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはZig Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Zig Academyコースには全4レッスンが含まれています。
フォーマットする理由
実際のプログラムでは、名前、個数、価格などの値をテキストに組み込みます。Zig では std.fmt と、そのフォーマット文字列ミニ言語を使って処理します。
中かっこのプレースホルダー
フォーマット文字列では {} をプレースホルダーとして使います。中かっこの組み合わせごとに、同時に渡したタプルから次の引数が取り出されます。
std.debug.print("x = {}\n", .{42});引数はタプルに入れる
引数は 匿名タプルとして指定し、.{ a, b } と記述します。引数が 1 つだけでも、そのタプルのラッパー内に入れます。
std.debug.print("{} {}\n", .{1, 2});文字列指定子
{s} を使うと、[]const u8 をテキストとして出力できます。単独の {} では、ポインターと長さからなる構造体としてスライスをフォーマットしようとします。
std.debug.print("{s}\n", .{"hi"});数値の基数
{x} は 16 進数、{b} は 2 進数、{o} は 8 進数というように、指定子で整数の基数を制御できます。低レベルのデバッグに便利です。
std.debug.print("{x}\n", .{255}); // ff幅とパディング
{d:5} のように、コロンを使って値を固定幅にそろえます。数値がきれいに整列され、読みやすい列になります。
std.debug.print("{d:5}\n", .{7});浮動小数点数の精度
{d:.2} のような精度フィールドを使うと、小数点以下の桁数を制限できます。結果は小数点以下ちょうど 2 桁で表示されます。
std.debug.print("{d:.2}\n", .{3.14159});中かっこをエスケープする
出力にリテラルの波かっこが必要ですか?2つ重ねてください。{{は{を1つ出力し、}}は}を1つ出力します。これにより、プレースホルダーとの混同を避けられます。
std.debug.print("{{x}}\n", .{});文字列を構築する
stdoutではなくメモリにフォーマットするには、std.fmt.allocPrintを呼び出します。テキストを保持する新しい[]u8を割り当てて返します。
const s = try std.fmt.allocPrint(
alloc, "id={}", .{id});割り当てたものを解放する
allocPrintはアロケーターを使用するため、返された値の所有権は呼び出し側にあり、freeする必要があります。呼び出し直後にdeferを置くと、後片付けをすっきり行えます。
defer alloc.free(s);bufPrintで固定バッファーを使う
ヒープをまったく使いたくない場合は、独自の配列に< strong>std.fmt.bufPrintで書き込みます。実際に使用した、値が書き込まれたスライスを返します。
var buf: [16]u8 = undefined;
const out = try std.fmt.bufPrint(&buf, "{}", .{9});確認問題
[]const u8の値を出力し、読みやすいテキストとして表示したいとします。
まとめ
std.fmtを使ってテキストをフォーマットしました。{}と{s}のプレースホルダー、基数、幅、精度に加え、文字列用のallocPrintとbufPrintも学びました。🎨
AI チューターと学ぶ Zig — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 30
- レッスン
- 120
よくある質問
「std.fmtでテキストをフォーマットする」レッスンは無料ですか?
はい。「std.fmtでテキストをフォーマットする」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Zig Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Zig Academyコースには全4レッスンが含まれています。
「std.fmtでテキストをフォーマットする」で何を学びますか?
フォーマット指定子で文字列を組み立てます。 ブラウザで直接実行するハンズオンコードでZig Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Zig Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのZig Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「std.fmtでテキストをフォーマットする」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このZig Academyレッスンでコードを書いて実行できますか?
はい。すべてのZig Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 文字列は[]const u8
- 文字列リテラルとエスケープ
- バイトを比較・検索する
- std.fmtでテキストをフォーマットする