在我的程序中,所需資源的一部分是存儲數據的目錄。按照慣例,我決定將此目錄設爲~/.program/
。在C++中,使此目錄(在基於UNIX系統),正確的方法是這樣的代碼:在字符串中使用變量
#include <sys/stat.h>
#include <unistd.h>
#include <iostream>
using namespace std;
void mkworkdir()
{
if(stat("~/.program",&st) == 0)
{
cout << "Creating working directory..." << endl;
mkdir("~/.program/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
mkdir("~/.program/moredata", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
}
else
{
cout << "Working directory found... continuing" << endl;
}
}
int main()
{
mkworkdir();
return 0;
}
現在,使用mkdir("~/.program/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)
的~
是在至少可疑的可靠性,所以我真的想do提示輸入用戶名,將其存儲在string
(如string usern; cin >> usern;
)中,然後執行mkdir("/home/{$USERN}/.program/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)
(如在shell中)。然而,我不知道如何獲得一些相當於$ USERN的字符串,因爲我不知道如何將一個可擴展的C++構造變成一個字符串。我的意思是,我插入變量的任何「形式」將擴展到該變量的內容到字符串中。
我很抱歉,如果這個問題很混亂,我似乎無法解釋我究竟是什麼。
另外,還有更好的辦法是,可以在不提示的情況下獲取用戶名? (和,其存儲在一個字符串,當然)
如果只有我能標記兩個答案作爲答案:( –
@DistantGraphics薩胡的答案是好得多,所以不用擔心,乾杯! – Ramon