07用d编程重定向标准io流
//名字为a.d
import std.stdio;
void main() {
double number;
readf(" %s", &number);
writeln(number * 2);
}//太奇怪,这么一个程序`300kb`?,看来d这确实`标准库和运行时`太大了.
命令a >1.txt,注意要输入数字.输入其他的话,会一直输入下去的.
同样,在2.txt输入数字,然后命令a <2.txt,则控制台显示出结果来了.
可同时使用a <2.txt >1.txt.可以用|将他们连接起来.
这样就可以将上一个程序的输出(管道至)=>下一个程序的输入了.
文件
bom为字节序标记,大头,小头,utf8为特定3个字节.utf16,32为大头小头标记.
用std.file的File结构.
读的时候可以多线程/多程序同时读,写的时候就要锁了.
File file = File("student_records", "r");
有r,w,a,w+,a+等方式.
局部区域中打开文件,出这个区域后自动关闭,与其他栈对象/局部对象一样
如再打开不同文件则
file.close();//先关闭
file.open("student_records","r");//再打开
//从文件读写
writeln("hello");
stdout.writeln("hello");//与上一样
file.writeln("hello");//写至特定文件
eof表文件尾,文件模块在此,exists判断是否存在文件.
文件的打开模式:
r,从头读.
r+:读写(从头读写),
w,文件不存在,建空文件.文件存在,清空.即始终为空文件.
w+,与上行一样,只是有读权限.
a,附加,文件不存在,建空文件.存在,则保留内容,并准备好在文件尾写内容.
a+,写与上一样,读则从头读.既可读也可写.
都可以加上b,表示按二进制读,但在posix系统中,没用,
import std.stdio;
void main() {
File file = File("student_records", "w");//模式
file.writeln("Name : ", "Zafer");
file.writeln("Number: ", 123);
file.writeln("Class : ", "1A");
}//readf,就像读流一样
写至文件,用法与stdout一样.
由于File需要不变的串,如果是char[],则需要用idup来转换一下,再用.
import std.stdio;
import std.string;
void main() {
File file = File("student_records", "r");
//读文件,这种方式,其实不是很方便.
while (!file.eof()) {
string line = strip(file.readln());
writeln("read line -> |", line);
}
}
这样auto var = VeryLongTypeName( / * ... * /);
其实仍然有点不爽.c++是这样的.
型 a{...};就初化完了.是不是更爽?
auto duration = 42;
auto distance = 1.2;
auto greeting = "Hello";
auto vehicle = BeautifulBicycle("blue");
这些auto,其实是占位符,推导出其最佳类型.
typeof类似c++的decltype(...),推导出类型.
在模板与插件中非常有用.
浙公网安备 33010602011771号