C 跨平台開發的坑集合

2021-10-25 22:20:22 字數 962 閱讀 1630

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 之類的函式是個不錯的替代。為什麼說是類似函...