2017-02-21 15 views
3

C:ドライブのDocumentsにファイルを保存しようとしています。だから私は他の人にそれを与えることができ、それは彼らの文書に保存されます。%USERPROFILE%に保存

私はCをつかむことを意図している%のUSERPROFILE%以下にまで読ん:\ Users \ユーザーjsmit \それが私のために動作しません:鉱山はCになります。すなわち\ Users \ユーザー%USERPROFILE%\

void savePassword(string stringpassword, string site) { 
ofstream out("C:\\Users\\%USERPROFILE%\\Documents\\New folder\\output.txt", ofstream::app); // Here 
out << site << ": " << stringpassword << endl; // This is where it saves the password into the text file 
out.close(); // Closes file 
} 

私はこれを行う場合、それは動作します:

ofstream out("C:\\Users\\jsmit\\Documents\\New folder\\output.txt", ofstream::app); 

私は私が他の誰かにそれを与えることができるように必要があるだろうし、正しいファイルをつかんで自分のドキュメントに保存することができるだろうどのようなコードパス?

+0

あなたは '%USERPROFILE%'について間違っています。 [それはユーザー名ではなくパスに展開](http://superuser.com/a/571978/64178) –

答えて

4

OS ++環境変数については、C++には何も分かりません。その変数の意味を知りたい場合は、std::getenvのように

char * userpath = getenv("USERPROFILE"); 
std::string path 
if (userpath != nullptr) 
    path = std::string(userpath) + "\\Documents\\New folder\\output.txt"; 
else 
    std::cout << "No user path"; 
+0

@ NathanOliverはそれを試しましたが、奇妙なエラーが発生しました。場所0x00000000を読み取るアクセス違反。 – IVIaximumPower

+0

編集先:\t std :: string path = std :: string(getenv( "USERPROFILE"))+ "\\ドキュメント\\新しいフォルダ\\ output.txt"; して作業しました – IVIaximumPower

+1

@IVIaximumPowerこれは、 'getenv'が変数を見つけることができなかったことを意味します。エラーチェックを表示するようにコードを更新しました。 – NathanOliver

1

C++標準ライブラリは、オペレーティングシステム固有のものであるため、環境変数の置換は行いません。

などのヘルプを使用してそれを行うのはあなた次第です。 GetEnvironmentVariable

+0

私はそれが何であるか分かりません。私はC++に新しいです – IVIaximumPower

+1

@IVIaximumPower:リンクをクリックしてください! –

+0

@LightnessRacesinOrbitええ、私はやったことがある、私はそれを笑うのいずれかを理解していない。私はこれをやろうとしていないと思う。それはそれが複雑であることを知らなかった。 – IVIaximumPower

関連する問題