2012-02-14 129 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

相关问题