gpt4 book ai didi

Windows命令行重定向下的c++换行符

转载 作者:可可西里 更新时间:2023-11-01 14:40:59 25 4
gpt4 key购买 nike

我发现 Windows 命令行重定向会自动将 '\n' 替换为 '\r\n'。有什么方法可以避免这种情况?因为在 stdout 或 stderr 重定向之后,如果您将 '\r\n' 写入控制台,您将得到 '\r\r\n' 而不是 '\r\n'。

非常感谢!

你可以试试一个简单的程序:

fprintf(stdout,"Hello, world!\r\n");

然后你用重定向运行它:

demo 1>demo.log

通过使用任何十六进制编辑器,您会发现 '\r\n' 由 '\r\r\n' 表示。

更新:

@steve-jessop 我已经通过使用 setmode 解决了这个问题,这将强制 stdout 使用 O_BINARY 模式。所以流不会将 \n 翻译成 \r\n

非常感谢!

最佳答案

避免的方法就是不写"Hello, world!\r\n" . fprintf(stdout,"Hello, world!\n");std::cout << "Hello, world!" << std::endl;就足够了。

这不是命令行重定向或 stdout 所特有的,对于以字符模式(与二进制模式相反)打开的任何文件描述符也是如此。

关于Windows命令行重定向下的c++换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6891252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com