2012-02-14 18 views
0

これは私の最初のC++アプリケーションです。私はVisual C++ 2010 Expressを使用しています。ドライブが回転しないように10秒ごとにWD USBハードドライブのalive.txtファイルに "alive"という行を書き込むコンソールプログラムを作成しようとしています。私はプログラムが私にドライブレターを要求し、それを使ってファイルがどこにあるのかをプログラムに伝えさせたい。これは動作します:ファイル名の文字列をofstream :: openに渡す方法

while (true) 
{ 
Sleep(5000); 
cout << "Past sleep"; 
ofstream AliveFile; 
AliveFile.open ("j:\\alive.txt"); 
AliveFile << "alive" << endl; 
AliveFile.close(); 
} 
return 0; 

しかし、私は、コンソール入力からドライブ文字を取得し、文字列へのパスを保存し、それが動作しませんAliveFile.openすることを渡す:

string DriveLetter; 
cout << "What is the drive letter for the drive you want to keep awake?" << endl; 
getline(cin, DriveLetter); 
cin.clear(); 
string Path; 
Path = "\"" + DriveLetter + ":\\alive.txt\""; 
cout << Path << endl; 

while (true) 
{ 
Sleep(10000); 
ofstream AliveFile; 
AliveFile.open (Path); 
AliveFile << "alive" << endl; 
AliveFile.close(); 
} 
return 0; 

パス <パスだから、なぜAliveFile.open(Path)が動作しないのか分かりません。

+0

あなたは 'DriveLetter'が正確に1文字の文字列であることを確認していますか?あなたはその長さを確認しましたか?デバッガでプログラムをデバッグしようとしましたか? –

答えて

1
Path = "\"" + DriveLetter + ":\\alive.txt\""; // Why adding \ before the root. 

TRY -

Path = DriveLetter + ":\\alive.txt\"; 
+0

ああ、意味がある。私はそれの周りに引用符が必要だと思っていた。ありがとうございました! – 0xDECAFBAD

+0

通常、システムコールまたはシェル呼び出しで使用する引数文字列を作成する場合は、引用符が必要です。 – GTAE86

関連する問題