d,奇怪的io刷新.
过去如下代码,第二条
消息发送到标准输出之后抛ConvException
.现在,第2条
不显示.输出已刷新,但在输出异常后.
import std.stdio;
void main() {
int a;
write("请输入整:");
readf("%s", &a);
int b;
write("请输入另一整:");
readf("%s", &b);//用` %s`替代,又正常了.
}
当前行为,很奇怪,在刷新stdout
前,打印了readf
错误.
默认是在换行符上刷新,这里无换行符
.
但另一个规则
是从标准输入
读取会自动刷新
标准输出.
目前假设是有人改变了标准错误与标准输出
顺序.这就是为什么输出
现在让我更加困惑
.
我断定
有个功能,可链接
(或锁定
或连接
?)输出流至输入流
,这样从输入流
中读取将自动刷新
输出流.
你可能混淆
了文件/io
流.
对流和cin/cout
,如下工作,
std::cin.tie(nullptr); // 解绑定cin和cout
std::cin.tie(&std::cout);//绑定cin和cout(默认)
这是更通用功能.
:就是它,我记成链接
了.
谢谢你.一定是这样的.
不管自动刷新
是否标准,至少终端中是这样.我在无version=input
时运行以下程序时,输出为1024
个字符的波.(大约3秒后出现第一波.)
但是,当我使用version=input
运行它时,我看到在输入前,输出自动刷新:
import std.stdio;
import core.thread;
// version = input;
enum inputPeriod = 10;
void main() {
foreach (i; 1 .. 10_000) {
Thread.sleep(10.msecs);
write(' ', i);
version (input) {
if(i%inputPeriod==0){
write("输入符: ");char c;
readf(" %s", &c);
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现