[入门] std.file.read返回值不能作为正则表达式string参数的问题

tuja 2007-05-02
std.file.read(char[] name)返回的是void[],文档上说是:
Read file name[], return array of bytes read.
我把返回值用作std.regexp.sub的参数,结果失败,void[]不能转换为char[]

没有办法只好用import代替file.read

请教file.read返回值void[]怎样才能转换为char[]

下面是测试代码:

import std.regexp;
import std.stdio; //for writefln
import std.file; //for read

void main()
{
//~ auto str = read(r"D:\test.txt"); //返回值void[]不匹配sub的参数char[]
auto str = import("test.txt"); //成功,编译时加参数-JD:\
    auto m = sub(str,"\n","newline","g");
writefln("%s",m);

}


player7 2007-05-02
我这里没有问题,可以转换
auto str = cast(char[])read(r"D:\test.txt");
h_rain 2007-05-03
我是这么用的
import std.regexp;
import std.stdio; //for writefln
import std.file; //for read

void main()
{
char[] FileName=r"D:\test.txt";
uint FileLen=getSize(FileName);
char []str = (cast(char*)read(FileName))[0..FileLen];
writefln("FileLen=%d,%s",str.length,str);
getchar();
}



import std.regexp;
import std.stdio; //for writefln
import std.file; //for read

void main()
{
char[] FileName=r"D:\test.txt";
uint FileLen=getSize(FileName);
//char []str = (cast(char*)read(FileName))[0..FileLen];
char []str = cast(char[])read(FileName);
writefln("FileLen=%d,%s",str.length,str);
getchar();
}



auto str = cast(char[])read(FileName);
这样是不是效率最高啊?str直接就是内容串的引用,不用像上面那样进行复制了。
tuja 2007-05-03
谢谢player7和h_rain。
Global site tag (gtag.js) - Google Analytics