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.fileFile结构.
读的时候可以多线程/多程序同时读,写的时候就要了.
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(...),推导出类型.
模板与插件中非常有用.

发布了381 篇原创文章 · 获赞 25 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/fqbqrr/article/details/104587178