日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Cout和Printf,選擇哪個更好?

本文轉載自微信公眾號「程序喵大人」,作者程序喵大人。轉載本文請聯(lián)系程序喵大人公眾號。

網(wǎng)上經(jīng)??吹接腥苏f,不建議使用cout,而應該更多使用printf,下面說說我的看法!

個人看法是兩個都不建議用。

下面說下我的理由:

cout方式效率低:每次cout << endl,都會刷新一遍輸出緩沖區(qū)。

cout方式線程不安全:

 
 
 
  1. std::cout << "Hello " << "World ";

上面代碼其實等同于:

 
 
 
  1. std::operator<<(std::operator<<(std::cout, "Hello "), "World ");

相當于調用了兩次operator<<,不保證調用兩次operator<<是線程安全的。

cout方式輸出復雜的格式很麻煩:比如我想輸出a + b = c:

 
 
 
  1. std::cout << a << " + " << b << " = " << c << std::endl;

是不是很麻煩,那可以使用printf?

 
 
 
  1. printf("%d + %d = %d \n", a, b, c);

但printf需要開發(fā)者填入變量格式,如果填寫有誤,有可能打印錯誤,也有可能crash:

  • 某個long long 型,使用%d打印會怎么樣?
  • 某個int32_t型,使用%lld打印會怎么樣?
  • 某個const char* 型,使用%d打印會怎么樣?
  • 某個float型,使用%d打印會怎么樣?

所以使用printf會給開發(fā)者帶來負擔,一定要在打印前確認變量的類型,并且一定要保證配置的輸出格式正確,我想大多數(shù)人可能都會在print某個變量前搜索過打印某個類型需要使用哪種格式吧?

那用啥呢?

cout配合format。

 
 
 
  1. std::cout << std::format("{} + {} = {} \n", a, b, c);

使用format可以把上面的問題全都解決,C++20標準已經(jīng)全面支持使用std::format,如果不打算上C++20。可以考慮使用spdlog。

而且平時做項目時基本都使用第三方log庫,沒有幾個調用這種裸接口的。

歐了,打完收工!


網(wǎng)站欄目:Cout和Printf,選擇哪個更好?
本文路徑:http://m.5511xx.com/article/dpdoeph.html