typestar

std.fmt en Zig

Formatear a un buffer de pila y parsear de vuelta — sin allocator a la vista.

const std = @import("std");

pub fn main() !void {
    // bufPrint formats into a stack buffer -- no allocator involved.
    var buf: [48]u8 = undefined;
    const line = try std.fmt.bufPrint(&buf, "day {d} mean {d:.2}", .{
        3, 68.14,
    });
    std.debug.print("built: [{s}]\n", .{line});

    // parseInt and parseFloat go the other way.
    const day = try std.fmt.parseInt(u8, line[4..5], 10);
    const mean = try std.fmt.parseFloat(f32, "68.14");
    std.debug.print("parsed back: day {d}, mean {d:.2}\n", .{ day, mean });
}

Cómo funciona

  1. bufPrint escribe dentro de buf y devuelve el slice que ocupó.
  2. {d:.2} fija los decimales igual en cada print.
  3. parseInt y parseFloat devuelven uniones de error, aquí desenvueltas con try.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
494
Tokens
133
Ritmo de tres estrellas
65 tpm

Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 123 segundos.

Escribe este fragmento

Paso 2 de 3 en La biblioteca estándar; paso 23 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →