VC有個讓新手抓狂的地方, 把工程路徑作為調試模式時的進程當前目錄.
估計很多新手因為打不開文件而耗費大量的時間,甚至放棄
以前使用純Windows方式解決這種問題:
1: #include <Shlwapi.h>
2: #include <shlobj.h>
3:
4: #pragma comment(lib,"shlwapi.lib")
5:
6: wchar_t exename[MAX_PATH];
7: ::GetModuleFileName(NULL,exename,MAX_PATH);
8: ::PathRemoveFileSpec( exename );
9: ::SetCurrentDirectory( exename );
需要跨平臺時,可以這樣寫:
1: #include <direct.h>
2: #include <boost/filesystem.hpp>
3:
4: int main(int argc, char* argv[])
5: {
6: _chdir( boost::filesystem::path( argv[0] ).remove_filename().string().c_str() );
7: }
被Windows慣壞了, 到處找Linux或者boost版本的GetModuleFileName, 結果忘記了當年c語言課上教的命令行傳入參數...