在Zig中,我该如何从字符串中解析出一个整数?

3
在Zig中,从字符串中解析整数并指定结果整数类型的最佳方法是什么?
const foo = "22";

例如,如何将foo转换为i32


1
你有尝试过什么吗?你有查阅文档吗?你有失败的示例吗?你有研究过你遇到的错误吗?更具体一些可能会有所帮助。这个链接可能会有所帮助,我只用了30秒就找到了:https://github.com/ziglang/zig/issues/4142#issuecomment-573286768 - 注意,我没有给你的问题投反对票。 - undefined
1
@DanielTate 我在各处搜索并从文档中得到了一个基本答案,但是我在Zig方面是个新手,我希望能从更有经验的人那里得到一个详细的回答。我还想到既然在Stackoverflow上没有关于这个问题的答案,这个问题可能对其他正在寻找答案的人有用。 - undefined
2
我明白,不幸的是,这个社区不喜欢这样的问题,他们更喜欢具体的问题。详细描述你想要实现的具体操作,至少提供一个伪代码示例或失败尝试,将会使问题的质量更高。从一瞥之间看起来,你在这里问了3个问题。 - undefined
1个回答

5
在查看了Zig的标准库文档之后,我发现了std.fmt.parseInt,它允许你将一个字符串解析为任意大小的有符号或无符号整数(例如i32、u64)。
示例:
const foo = "22";

const integer = try std.fmt.parseInt(i32, foo, 10);

你的例子不准确。fmt.parseInt函数返回错误联合类型,所以在这种情况下integer的类型不是i32而是ParseIntError!i32。你必须使用try关键字来获取值的类型:const integer = try std.fmt.parseInt(i32, foo, 10); - undefined
@KindFrog 谢谢你的纠正,我会确保编辑答案。 - undefined
4
请使用try而不是catch unreachable。你只能这样做是因为你正在解析一个已知的字符串;你本可以直接写成const integer = 22;。但是如果有人正在寻找解析数字的方法,他们很可能会遇到未知的字符串,并且需要正确处理错误。这个答案只会让他们感到困惑。 - undefined
@sigod 已编辑完成。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接