我有以下 Zig 片段:
var buffer: [20]u8 = undefined;
const precise_string = std.fmt.bufPrint(&buffer, "{d:.d}", .{ max, precision }) catch unreachable;
std.debug.print("{}", .{precise_string.len});
我收到此错误:
zig test src/root.zig
/snap/zig/12539/lib/std/fmt.zig:294:13: error: extraneous trailing character '{'
@compileError("extraneous trailing character '" ++ unicode.utf8EncodeComptime(ch) ++ "'");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/snap/zig/12539/lib/std/fmt.zig:155:55: note: called from here
const placeholder = comptime Placeholder.parse(fmt[fmt_begin..fmt_end].*);
~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
我知道错误的根源是格式说明符字符串,但我无法弄清楚如何修复它,实际的问题是什么。我预计它将把
max
的值放在字符串的开头,然后在 :.
之后放置精度值。
最终解决了以下带有位置参数的格式说明符
try std.fmt.bufPrint(&buffer, "{[0]d:.[1]}", .{ max, precision })