如何按特定字符拆分 zig 中的字符串?

Sta*_*lov 6 split zig

我在字符串中有一个简单的句子。我想在新行上打印每个单词,或者只是对每个单词进行一些计算?

zig中有类似python的东西吗"Hello World".split()?像这样的东西:

var arr = std.strings.split("Hello world");
Run Code Online (Sandbox Code Playgroud)

Sta*_*lov 11

这是我发现的最简单的方法

const std = @import("std");

pub fn main() !void {
    var it = std.mem.split(u8, "Hello World", " ");
    while (it.next()) |x| {
        std.debug.print("{s}\n", .{x});
    }
}
Run Code Online (Sandbox Code Playgroud)

看起来分裂是在标准mem模块中实现的。.split返回SplitIterator一个带有方法的结构.next()。当.next()返回null时,while停止。这是 Zig 中的常见模式:

https://ziglearn.org/chapter-2/#iterators