【发布时间】:2012-01-22 11:04:15
【问题描述】:
我正在使用 C++ 将二进制数据打印到标准输出,然后将其重定向到文件。
(我不想直接写入文件)。
但是,当我尝试打印值'0A' 时,我得到'0D 0A'。 (这是我将输出复制到 HexEdit 时看到的)。
据我所知,'0A' 是“新行”的 ascii,因此 cout 会自动添加 '0D',即 “回车”。
我想要的是单独打印0A。我该怎么做?
我的代码:
unsigned char *buf = new unsigned char[width+1];
for (int x = 0; x < width; x++)
{
buf[x] = (unsigned char) src[x];
}
buf[width] = '\0'
cout<<buf;
我见过这个:Print new line to a text file without carriage return (CR) in windows,但它似乎对我没有帮助。
【问题讨论】:
-
为什么你提到的链接对你没有帮助?
-
@Lol4t0:链接指向一个 C 问题,而不是 C++ 问题。
-
这并不重要,问题是TS应该以二进制模式重新打开
stdout。 -
谢谢大家。我最终做的是使用 _setmode 将标准输出的模式设置为二进制。
fd_stdout = fdopen (1,"wb"); _setmode( _fileno( stdout ), _O_BINARY );然后我使用 fwrite 将我的二进制数据写入标准输出fwrite(reinterpret_cast<char*>(buf), width, 1, fd_stdout);
标签: c++ printing carriage-return