【问题标题】:Dart: print newline without carriage return on Windows?Dart:在Windows上打印没有回车的换行符?
【发布时间】:2014-06-09 21:09:00
【问题描述】:

我正在尝试从 windows dart vm 输出带有 *nix 行结尾的文本,它似乎总是将 \n 替换为 \r\n:

#!/usr/bin/env dart

# foo.dart

import 'dart:io';

main() {
  stdout.write('a\nb\nc\n');
  stdout.write('a\x0Ab\x0Ac\x0A');
}

这是我从 cygwin 运行时得到的结果

$ foo.dart | foo.txt
$ cat -A foo.txt
a^M$
b^M$
c^M$
a^M$
b^M$
c^M$

有没有办法在不自动插入回车的情况下输出文本?

【问题讨论】:

    标签: dart dart-io


    【解决方案1】:

    问题是 stdout 默认以文本模式打开,Windows 本身会自动将 LF 转换为 CRLF。

    一般来说,如果是 C/C++,您将能够使用 _setmode 将 stdout 切换到二进制模式(参见 how C output LF to stdout without being changed to CR LF?)。

    在 Dart 中,您无权访问该 API 函数。

    我会在 dartbug.com/new 上提出请求。

    【讨论】:

      猜你喜欢
      • 2023-02-21
      • 1970-01-01
      • 1970-01-01
      • 2012-03-22
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多