如何在 Zig 中编译时连接两个字符串文字?

问题描述 投票:0回答:2

如何在 Zig 中连接以下在编译时已知长度的字符串?

const url = "https://github.com/{}/reponame";
const user = "Himujjal";
const final_url = url + user; // ??
string compilation string-concatenation zig
2个回答
20
投票

数组连接运算符,用于两个计算时已知的字符串:

const final_url = "https://github.com/" ++ user ++ "/reponame";

std.fmt.comptimePrint 用于 comptime 已知的字符串和数字以及其他可格式化的内容:

const final_url = comptime std.fmt.comptimePrint("https://github.com/{s}/reponame", .{user});

运行时,带分配:

const final_url = try std.fmt.allocPrint(alloc, "https://github.com/{s}/reponame", .{user});
defer alloc.free(final_url);

运行时,无分配,具有已知的最大长度:

var buffer = [_]u8{undefined} ** 100;
const printed = try std.fmt.bufPrint(&buffer, "https://github.com/{s}/reponame", .{user});

运行时,使用ArrayList

var string = std.ArrayList(u8).init(gpa);
defer string.deinit();
try string.appendSlice("https://github.com/");
try string.appendSlice(user);
try string.appendSlice("/reponame");
const final_url = string.items;

0
投票

这是一件很容易做到的事情。缺乏研究产生了这个问题。但对于任何想知道的人来说。

const final_url = "https://github.com/" ++ user ++ "/reponame";

欲了解更多信息,请访问:zig 中的comptime

© www.soinside.com 2019 - 2024. All rights reserved.