std::fstream::open函式:
void open (
const
char
* filename,
ios_base::openmode mode = ios_base::in | ios_base::out)
;void open (
const string& filename,
ios_base::openmode mode = ios_base::in | ios_base::out)
;
案發現場:
std::fstream file;
char buf[10]
=;file.
open
("test.dat"
,ios::truncate|ios::out)
;file.
write
(buf,10)
;file.
close()
;
linux平台檔案大小是10個位元組,winzhedows平台檔案大小 > 10個位元組
納尼。。。什麼鬼。。。
百般折騰,頭髮抓掉一把一把,折騰了大半天後,終於靈光一閃,是不是少了個標誌,加上ios::binary
後果然神力顯現,經過驗證大小都一樣了。
解鎖正確姿勢如下:
std::fstream file;
char buf[10]
=;file.
open
("test.dat"
,ios::truncate|ios::out|ios::binary)
;file.
write
(buf,10)
;file.
close()
;
跨平台開發的一些坑
由於各種原因,平時開發通常在windows下開發,但是實際生產環境通常實在linux環境下的,所以就不可避免的遇見一些相容的問題,尤其對於新手來說,面對這種問題更是束手無策。說乙個今天開中遇見的乙個比較常見的問題 windows和linux系統下換行符的問題 問題 就像這樣,自己無數次確認了確實存在...
C 跨平台開發心得小結
linux程式設計與windows程式設計的差異之處 1.檔案與目錄的大小寫以及路徑分隔符的差別 windows下不區分大小寫,路徑分隔符一般使用 linux下區分大小寫,路徑分隔符使用 2.itoa 函式在linux下並不存在 所以使用類似sprintf 之類的函式是個不錯的替代。為什麼說是類似函...
C 跨平台開發心得小結
linux程式設計與windows程式設計的差異之處 1.檔案與目錄的大小寫以及路徑分隔符的差別 windows下不區分大小寫,路徑分隔符一般使用 linux下區分大小寫,路徑分隔符使用 2.itoa 函式在linux下並不存在 所以使用類似sprintf 之類的函式是個不錯的替代。為什麼說是類似函...