2

我已经调试到我知道问题的程度,我只是不知道如何解决它。

现在我正在使用:

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";

那么我怎样才能让它在这条线没有注释的情况下正常工作呢?

4

2 回答 2

6

冒号 ( :) 是文件名的非法字符,至少对于 NTFS。尝试使用strftime()而不是格式化不包含冒号的字符串。

于 2012-10-27T20:34:53.267 回答
2

我来猜一猜。将时间添加到您的文件名将添加冒号,例如 12:23:34。我猜你在一个文件系统上,在文件名中使用冒号是不合法的。

解决方案(如果我的猜测是正确的),用下划线或类似内容替换冒号。

于 2012-10-27T20:34:25.217 回答