//名字为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(...)
,推导出类型.
在模板与插件
中非常有用.