对于使用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)
答案 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;