在D中将auto(字符串)转换为char

时间:2013-12-23 17:01:55

标签: d

对于使用foreach循环进行迭代并获取文件的日期,我需要输入char [],但不是字符串。

我写了下一段代码:

auto files = dirEntries ("E:\\ddd", SpanMode.shallow);

foreach (file; files)
{
    char [] s = to!char[](file); //it's crap... and do not work...
    writeln(file);

}

我使用下一个方法http://dlang.org/phobos/std_file.html#.getTimes 它需要作为输入char [] :(在char [] name)

3 个答案:

答案 0 :(得分:7)

要获取不可变数组的可变副本,可以使用.dup

char[] s = file.dup;

但是在您的情况下,您不需要进行任何转换。 getTimes接受in char[]这是scope const char[]的快捷方式。将不可变数组作为const参数传递是完全合法的,因此它应该“正常工作”。

答案 1 :(得分:0)

您的转换行应如下所示:

... = to!(char[])(file.name);

这是因为速记模板实例化对多个令牌无效。

其次,不需要转换为char [],因为你说getTimes采用“in char []”,这意味着它不会修改字符串,这意味着可以传递不可变(char)[]转换。

答案 2 :(得分:-3)

您也可以使用:

const char[] s = cast(char[]) file;