簡體   English   中英

C ++標准是否允許通過stdin / stdout讀取和寫入任意二進制數據?

[英]Does the C++ standard allow reading and writing arbitrary binary data via stdin/stdout?

我仍然對C ++ 17標准究竟是什么說明允許讀取和寫入標准輸入和輸出的內容感到困惑。

如果程序通過標准輸入接受任意二進制數據或將任意二進制數據輸出到標准輸出(即使許多程序在實踐中這樣做),程序是否會調用未定義的行為?

stdio對通過它傳輸的數據完全保持中立。

如果不是,它會破壞I / O重定向等內容。 如果您無法通過stdio發送原始二進制數據,則無法將諸如gzip壓縮器之類的插入工具用於shell管道。

問題是關於標准,所以我認為這個問題的答案也適用於你的:

標准並不總是如我們所希望的那樣連貫,因為它是一個非常大的文檔,由許多不同的人編寫(實際上),盡管所有的校對確實發生了。

正如同樣的答案所表明的那樣,很難說什么是不良形式。

我的理解是標准對此並不明確,但還有其他語言特征(如datenwolf的例子所示)暗示它不是格式錯誤,無論它意味着什么:

STDIN和STDOUT是文件句柄的簡單事實意味着它們可以以二進制模式打開和讀/寫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM