雖然下面的代碼在Linux上編譯,但我無法在Windows上編譯它:boost :: filesystem :: path :: native()返回std :: basic_string <wchar_t>而不是std :: basic_string <char>
boost::filesystem::path defaultSaveFilePath(base_directory);
defaultSaveFilePath = defaultSaveFilePath/"defaultfile.name";
const std::string s = defaultSaveFilePath.native();
return save(s);
其中base_directory是一個類的屬性,它的類型是std :: string,而函數save只需要一個const std :: string &作爲參數。編譯器抱怨第三行代碼:
錯誤:從'const string_type {aka const std :: basic_string}'轉換爲非標量類型'const string {aka const std :: basic_string}'請求「
對於這個軟件,我用兩個升壓1.54(對於某些公共庫)和Qt 4.8.4(爲使用這個公共庫的UI)和我都編譯使用MinGW GCC 4.6.2。
如果我的評估是正確的,我會問你:我該如何使std :: stri的Boost返回實例返回實例如果我的Windows Boost構建返回std :: basic_string NG?順便說一句,有可能嗎?
如果我對這個問題做了一個糟糕的評估,我請你提供一些關於如何解決這個問題的見解。
乾杯。
謝謝你,這是真的很有幫助。你能提出一種方法來使這個代碼更加便攜嗎?我是否應該將我的字符串聲明爲文件系統路徑作爲boost :: filesystem :: path :: string_type貫穿我的代碼?這裏有什麼好的做法? – Ramiro
這取決於你想要對路徑做什麼。最便攜,但限制最多的是堅持'filesystem :: path'並使用boost提供的文件操作和iostream功能。如果你需要更具體的東西,你會失去可移植性,但會獲得靈活性。 –