飞镖:在Windows上打印换行没有回车?

时间:2014-06-09 21:09:01

标签: dart dart-io

我正在尝试从Windows dart vm输出带有* nix行结尾的文本,而且它似乎总是用\ r \ n替换\ n \ 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$

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

1 个答案:

答案 0 :(得分:4)

问题是默认情况下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上提出请求。