1樓:大段長安
沒有必要可以避免吧,除非發現特別不利的影響,比如影響了程式的效率。
我不是專業程式設計師,所以一貫在c++中寫入一些c函式的。
就從你的舉例來說,printf的可讀性確實要好一些。
2樓:SuperFashi
是的,C++使用時除非實在沒有替代品(例如exit函式)否則一定避免使用C。例如不用sprintf而用stringstream。
但是有乙個例外,就是你對效率要求很高時,還是C函式快。
3樓:汪周洋
盡量使用c++標準庫的類操作字串,格式化輸入輸出,檔案讀寫等等,能用stl的別用c語言庫函式,別在乎那點效能損耗,程式穩定bug少要重要得多
4樓:程式碼之詩
就本問題而言,boost::format 已經是好答案。
scanf 和 printf 是特例,不要推廣。不定引數的C函式並不多。
建議去看看 GCC 中 STL。應該知道,STL 下面是大把的C呼叫。
非要乙個通用答案的話,那好:
1、盡可能工作在最高的抽象層上。能用 shell script 解決的問題不要動用程式語言,哪怕是 python。同理,能用 STL 的時候不用 C 函式。
2、確有需求的時候不要忌諱任何程式語言,哪怕是C和彙編。當你只有乙個8M主頻1K記憶體的51,你的選擇很有限。
3、任何庫,哪怕是標準庫、POSIX庫,都是用來解決問題而不是用來為難你的。難到無法快速(以年度計算)解決的問題,要麼已經有人解決等你用 google 或 stackoverflow 去發現他們,要麼不該是你的工作——除非老闆給你漲薪水。
4、軟體總比硬體貴。51微控制器執行不了的庫,換STM;STM執行不了的庫,換ARM9+;再執行不了的庫,換INTELAMD。再不行就讓老闆申請863用銀河天河太湖吧。
總之,不要為省下10K軟妹幣的硬體,你花上半年加班。
5樓:
boost::format
#include
#include
using namespace std;
int main( )
6樓:573xmcgcg
第一種寫法:
cout
<<"("<<
x<<"),"
<<"("<<
y<<"),"
<<"("<<
z<<")"<<
endl
;第二種寫法:
//由於題目中使用了 %d ,所以假定型別為 intvector
output=;
bool
first_element
=true
;for
(auto
target
:output
)//C++11
cout
< ;第三種寫法(C++11): template T>void print(T target )template typename ...Tpack >void print(T target ,Tpack ...targets )int main() Hades 前面說書裡面說過,我忙猜,在申請記憶體的時候時間上申請的是乙個資料結構,包含頭部和可以位址資訊,free的時候去資料結構裡找就行了。比如裡要100記憶體,可能實際申請了110的記憶體多的就用來存放一些和記憶體相關的資訊了別。 白潔 多方面的因素 也許包括歷史因素 不存在對錯。c 的all... 這是微軟在UCRT中的實現,供參考 strcmp compare two strings,returning less than,equal to,or greater than Purpose STRCMP compares two strings and returns an integer t... 請問你是出於什麼目的想要重新寫一遍標準庫里的函式?如果是想要學習這些函式背後的演算法,那麼你應該去讀一本演算法書,比如 演算法導論 如果你只是想更熟悉C語言的語法,那麼去寫乙個有實用價值的專案會更好一點。 首先你要搞清楚,你是在學習C語言,那麼自己用自己的方式實現一邊C標準庫,首先對自己掌握C語言的...C語言和C 中,為什麼malloc函式需要傳入申請的記憶體大小,而free時候卻不需要傳大小呢?
C語言中不使用strcmp函式,怎麼用指標實現兩個字串的大小比較
學C語言的過程中是否要敲一遍C的庫函式?