私のプログラムでは、必要なリソースの一部がデータを格納するディレクトリです。習慣通り、私はこのディレクトリを~/.program/
にすることにしました。 C++では、(UNIXベースのシステム上で)このディレクトリを作成するための正しい方法は、このコードされています。今、mkdir("~/.program/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)
で~
を使用しての信頼性は、私が実際に何をしたいので、少なくとも疑問である文字列内の変数を使用する
#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;
}
doはstring
(string usern; cin >> usern;
のような)に保存してからmkdir("/home/{$USERN}/.program/", S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)
(シェルのように)を実行します。しかし、私は文字列に$ USERNをいくつか等価にする方法がわかりません。文字列に拡張可能なC++構造を得る方法はわかりません。私が意味することは、変数の "フォーム"をその変数の内容に展開して文字列に挿入することです。
この質問が混乱している場合はお詫び申し上げますが、私は欲しいものが何であるかを正確に説明することはできないようだ。
また、ユーザー名を要求せずにユーザー名を取得することは可能ですか?
を使用することができます回答として2つの応答をマークしてください:( –
@DistantGraphics Sahuの答えははるかに良いので、心配はありません。乾杯! – Ramon