我正在学习D语言并尝试拆分字符串:
import std.stdio;
import std.string;
auto file = File(path, "r");
foreach (line; file.byLine) {
string[] parts = split(line);
这段代码无法通过编译,报错如下:
Error: cannot implicitly convert expression (split(line)) of type char[][] to string[]
这个可以工作:
auto file = File(path, "r");
foreach (line; file.byLine) {
char[][] parts = split(line);
但是为什么我必须使用char[][]
呢?据我所了解,文档中说split
返回一个string[]
,我更喜欢这个。
idup
创建一个数组的不可变副本。因此,如果这很关键,您可以随时转换为不可变类型,如果需要的话。例如:foreach (line; file.byLine.map!"cast(string)a")
使用std.algorithm
中的map
。但是,要小心使用不可变类型转换。 - Sebastian GrafbyLine
使用的同一临时缓冲区。 - Vladimir Panteleev