Zig Academy · レッスン

std.fmtでテキストをフォーマットする

フォーマット指定子で文字列を組み立てます。

レッスン 4/413 ステップ

「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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 文字列は[]const u8
  2. 文字列リテラルとエスケープ
  3. バイトを比較・検索する
  4. std.fmtでテキストをフォーマットする
← Zig Academyに戻る