我正在尝试从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$
有没有办法在没有自动回车插入的情况下输出文字?
答案 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上提出请求。