2012-02-14 138 views
0

這是我的第一個C++應用程序。我正在使用Visual C++ 2010 Express。我正在嘗試編寫一個控制檯程序,該程序將每隔10秒將「alive」行寫入我的WD USB硬盤驅動器上的alive.txt文件,以防止驅動器停止轉動。我希望程序提示我輸入驅動器號,然後用它來告訴程序文件所在的位置。這工作:如何將字符串傳遞給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; 

路徑出來罰款時,我cout < <路徑,所以我不明白爲什麼AliveFile.open(路徑)不起作用。

+0

你確定'DriveLetter'正是一個字母串?你檢查了它的長度嗎?你是否嘗試用調試器來調試你的程序? – 2012-02-14 21:24:36

回答

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

嘗試 -

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

啊,這是有道理的。我想我需要圍繞它的報價。謝謝! – 0xDECAFBAD 2012-02-14 21:39:08

+0

如果您構建一個參數字符串以用於系統或shell調用,通常只需要引號。 – GTAE86 2012-02-14 21:43:33

相關問題