C++的慘痛教訓(未完待續) std::fstream打開中文路徑名失敗的問題緣由、解決方法以及注意事項

題記:只有痛才能讓人銘記!痛促進進步~html

1. strncpy,你們都知道要作安全檢查,但是誰都有嫌麻煩的時候,尤爲是本身很自信不會產生溢出的時候,可能不會坑了本身,卻會坑了使用這段代碼的人。因此,1.任什麼時候候都不要怕麻煩,安全檢查必不可少,這個疏忽在工程上會存在很大隱患;2.在使用公共代碼時,留意這類溢出函數( strcpy、strcat、sprintf(及其同類 vsprintf )和 gets)。3.windows編程建議使用微軟的安全字符串函數( strcpy_s、strcat_s、sprintf_s)。詳見安全編程: 防止緩衝區溢出編程

2.std::locale:global,更改設置全局C++語言環境,更多見fstream支持中文路徑時使用,請注意其在多線程環境下的問題(嚴重不嚴重,遇到了說的算),見我一篇隨筆【std::fstream打開中文路徑名失敗的問題緣由、解決方法以及注意事項】。不嚴重的就是,多線程時會有大屏輸出中文亂碼(僅一次,固然不嚴重了,不介意就直接忽略啦);嚴重的得時候,會致使程序崩潰,並且還很差判斷出緣由(不要懼怕,你不必定能遇到,但是我就不幸的遇到了,!!_!!)。windows

相關文章
相關標籤/搜索