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(...)
,推导出类型.
在模板与插件
中非常有用.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现