[入门] 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。
|
相关讨论
相关资源推荐
- Visual C++ 2008特性包的Beta版可供下载了
- 【c++】CMake 完整入门教程
- 用 VS2008 Feature Pack 修改现有的 Visual C++ 程序界面
- Visual Studio 2010 自述文件(与之前版本的区别及注意事项)
- C++学习(一)操作系统,GNU,CPU架构,编译器
- Visual C++.NET 2005中的STL简介
- 用VS2008 Feature Pack 修改您现有的Visual C++的程序界面 (转)
- Visual C++ Q&A
- 《Windows CE嵌入式开发入门——基于Xscale架构》 第6章 开发平台(Platform Builder和Embedded Visual C++)简介
- c++高级编程学习笔记6