2012-10-27 58 views
2

我已經調試過這個問題,我知道這個問題,我只是不知道如何解決它。fstream沒有創建一個帶有asctime值的文件,其文件名爲

現在我使用:

file.open(logFile.c_str(), std::ios::out | std::ios::app); 

LogFile變量工作正常,只要我註釋掉下面標線:

time_t rawtime; 
struct tm * timeinfo; 
time (&rawtime); 
timeinfo = localtime (&rawtime); 
logFile = "bin/"; 
if(_DEBUG) { logFile += "Debug/"; } 
else { logFile += "Release/"; } 
logFile += fileName; 
if(_DEBUG) { logFile += "Debug-"; } 
else { logFile += "Release-"; } 
logFile += asctime(timeinfo); // Works fine with this line commented. 
logFile += ".log"; 

所以,我怎麼能得到這個工作的權利與這條線未註釋?

回答

5

冒號(:)是文件名的非法字符,至少對於NTFS而言。嘗試使用strftime()來代替格式不包含冒號的字符串。

+0

謝謝你的作品 – Baraphor

2

我會猜測。將時間添加到文件名中會爲其添加冒號,例如12:23:34。我猜你是在一個文件系統中,在文件名中使用冒號是不合法的。

解決方案(如果我的猜測是正確的),用下劃線或類似的替換冒號。

相關問題