2012-02-14 3 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; 

경로를 내가 AloudFile.open (경로)가 작동하지 않는 이유를 이해할 수 없기 때문에 내가 잘 맞을 때 < < 경로가 나온다.

+0

당신은'DriveLetter' 정확히 한 문자의 문자열인지 확인이 있습니까? 길이를 확인 했습니까? 디버거로 프로그램을 디버깅하려고 했습니까? –

답변

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

시도 -

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

아, 그 말이 맞습니다. 나는 주위에 따옴표가 필요하다고 생각했다. 고맙습니다! – 0xDECAFBAD

+0

일반적으로 시스템 또는 쉘 호출에 사용할 인수 문자열을 구성하는 경우 따옴표 만 필요합니다. – GTAE86

관련 문제