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

posted @   zjh6  阅读(9)  评论(0编辑  收藏  举报  
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示