[英]Are there C++ versions of PHP's fsockopen, fread, fwrite, fclose?
[英]c++ function overloading, making fwrite/fread act like PHP versions
我習慣了PHP fwrite / fread參數的順序,並且我也想使它們在C ++中相同。
我希望它可以處理char和string類型,以及我放入的任何數據類型(僅在定義了長度的情況下)。
我對C ++完全陌生,這是我到目前為止所做的: 編輯:修復了std :: string&buf
size_t fwrite(FILE *fp, const std::string &buf, const size_t len = SIZE_MAX){
if(len == SIZE_MAX){
return fwrite(buf.c_str(), 1, buf.length(), fp);
}else{
return fwrite(buf.c_str(), 1, len, fp);
}
}
size_t fwrite(FILE *fp, const void *buf, const size_t len = SIZE_MAX){
if(len == SIZE_MAX){
return fwrite((const char *)buf, 1, strlen((const char *)buf), fp);
}else{
return fwrite(buf, 1, len, fp);
}
}
這個工作應該很好嗎? 如果我想以絕對最佳的方式做到這一點,該怎么辦?
如果要以最佳方式寫入文件,則應使用std :: iostreams。 手動處理緩沖區的長度是解決問題的方法。
另外,頂部重載應采用const std :: string&,而不是const std :: string。
但是,我看不到任何實際的錯誤。
fwrite / fread在對象上不能很好地工作; 因此,如@DeadMG所說,最好使用流。
就像是:
cout << str << endl;
這是一種更加面向對象的處理方式-您可以使對象內的運算符超載,以處理每個單個對象的不同要求。
這不是IMO函數的正確重載。 如果有的話,這些函數應該是對象內的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.