如何在 Zig 中声明多行字符串?

How to declare a multiline string in Zig?

提问人:fiatjaf 提问时间:10/17/2023 更新时间:10/25/2023 访问量:108

问:

如何在 Zig 中编写跨越多行的字符串?

例如:

var str = `hello
second line
world
fourth line
`
多行 字符串文字 zig

评论


答:

1赞 fiatjaf 10/17/2023 #1

Zig 有一种奇怪但很酷的语法,有多行以 开头,下一行是 。\\;

下面是一个单例:

const str =
    \\hello
    \\second line
    \\world
    \\fourth line
;

下面是一个包含 2 个多行字符串的数组:

const array_of_multiline_strings = [_][]const u8{
    \\hello
    \\world
    ,
    \\goodbye
    \\world
};
0赞 Tiago Tiede 10/24/2023 #2

在之前出色的响应之后,您似乎指的是 Zig 文档,特别是第 5.3.2 节,多行字符串文字。我相信实现这个例子会看起来像这样:

const print = @import("std").debug.print;
const mem = @import("std").mem; // will be used to compare bytes

const hello_world_in_c =
    \\#include <stdio.h>
    \\
    \\int main(int argc, char **argv) {
    \\    printf("hello world\n");
    \\    return 0;
    \\}
;

pub fn main() void {
    print("{s}\n", .{hello_world_in_c});
}

输出:

include <stdio.h>

int main(int argc, char **argv) {
    printf("hello world\n");
    return 0;
}