簡體   English   中英

在C ++中使用printf

[英]Use of printf in C++

在該網站上搜索“ printf vs cout”,引起了對兩者之間區別的討論,但這不是我想要的。 來自Python,我非常喜歡printf采用字符串格式的方式,如果可能的話,我寧願避免使用cout

忽略cout並僅使用printf是否被視為不好的做法? 這樣做的含義是什么? 在某些情況下不能使用printf情況是什么?

1)您只可以使用printf為基本類型,並為整數真的是只可用於“本地”類型的intlong int像等東西uint32_t需要便攜式打印頗為尷尬和麻煩宏。 完全不支持用戶定義的類型。

2) printf不是類型安全的。 也就是說,代碼的正確性取決於格式化字符串的 ,並且您不能僅憑靜態分析就無法確定程序是否格式正確。 這是C類型系統的根本缺陷,C ++可以避免“適當”的缺陷。

就是說, printf (或者也許是(v)snprintf )通常比iostream快很多,因此在高性能環境(例如高頻日志記錄)中,它是一種非常有競爭力的選擇。 但是,如果您只是偶爾進行輸出操作,則應該使用iostream或其他一些靈活的,類型安全的,慣用的C ++方法。 (當然,iostreams可能是C ++最可怕的角落之一。)

忽略cout並僅使用printf是否被視為不好的做法?

不,如果您更喜歡使用printf ,請繼續。

這樣做的含義是什么?

沒有。 C ++的方法是使用cout ,因為它應該更簡單。

在某些情況下不能使用printf的情況是什么?

我懷疑您會發現這種情況。 如果這樣做的話,編寫它們的人會太主觀。

cout是類型安全的。 cout是一個ostream ,因此它與其他ostream s具有相同的接口-例如,您可以提供新的重載來打印foo

printf格式字符串有時比cout的格式化方法更好。

暫無
暫無

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

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