我想創建一個文件來處理目錄名稱爲「IPM」的會話,即我的項目名稱。爲什麼我的文件/目錄操作可以在Windows上正常工作,但在Linux上不能正常工作?
我每次用戶登錄時訪問該文件,並退出再加上我也是在這樣,我創建了這個函數來創建一個路徑字符串一些地方訪問,以便在那裏是在不同的操作系統
創建的文件std::string SessionManager::createPathString(std::string sFileName)
{
char* pPath = getenv(HOME);
std::string sUserName(pPath);
createDirectory(sUserName);
std::replace(sUserName.begin(), sUserName.end(), '\\', '/');
sUserName.append("/IPM");
sUserName.append("/");
sUserName.append(sFileName);
return sUserName;
}
我調用這個函數來得到我的文件路徑,並創建目錄的功能是這樣的
int createDirectory(std::string sUserName)
{
sUserName += "\\IPM";
#ifdef _WIN32
int ret = _mkdir(sUserName.c_str());
#elif __linux__
int ret = mkdir(sUserName.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
#endif
return ret;
}
它創建Windows上的目錄,但無法在Linux上,如果該目錄或文件不目前它在Windows上創建,但不在Linu上X。
有沒有什麼辦法可以通過提升來實現,因爲我是C++新手,看起來很典型。
Boost.FileSystem – Danh
爲什麼你要更換反斜槓_after_試圖創建目錄? – SingerOfTheFall
Windows使用反斜槓和Linux使用正斜槓... http://stackoverflow.com/questions/38428561/difference-between-forward-slash-and-backslash-in-file-path – p0rter