C++ 路错了,怎么办?
我想在我的路径上写点东西 我的代码如下C++ 路错了,怎么办?,c++,qt,file,C++,Qt,File,我想在我的路径上写点东西 我的代码如下 QString Log::logPacketsPath = QDir::currentPath() + "/logs/Packets/"; int userID = 1; QString text = "test 1 2 3"; QFile logPacketFile(logPacketsPath + "UserID: " + userID + " - " + QDateTime::currentDateTime().toString("dd.MM.
QString Log::logPacketsPath = QDir::currentPath() + "/logs/Packets/";
int userID = 1;
QString text = "test 1 2 3";
QFile logPacketFile(logPacketsPath + "UserID: " + userID + " - " + QDateTime::currentDateTime().toString("dd.MM.yy") + ".log");
if (logPacketFile.open(QFile::WriteOnly | QFile::Text | QFile::Append))
{
QTextStream out(&logPacketFile);
out << "[" << QDateTime::currentDateTime().toString("dd.MM.yy, hh:mm:ss") << "]: " << text << "\n";
logPacketFile.close();
}
QString Log::logPacketsPath=QDir::currentPath()+“/logs/Packets/”;
int userID=1;
QString text=“测试1 2 3”;
QFile logPacketFile(logPacketsPath+“UserID:”+UserID+“-”+QDateTime::currentDateTime().toString(“dd.MM.yy”)+“.log”);
if(logPacketFile.open(QFile::WriteOnly | QFile::Text | QFile::Append))
{
QTextStream out(&logPacketFile);
out我不确定您正在使用哪个操作系统,但是“:”在Windows文件名中无效
接下来,在关闭文件之前,您应该执行QTextStream
:
out.flush();
logPacketFile.close();
或创建其他范围:
{
QTextStream out(&logPacketFile);
out << "[" << QDateTime::currentDateTime().toString("dd.MM.yy, hh:mm:ss") << "]: " << text << "\n";
}
logPacketFile.close();
我不确定您正在使用哪个操作系统,但是“:”在Windows文件名中无效
接下来,在关闭文件之前,您应该执行QTextStream
:
out.flush();
logPacketFile.close();
或创建其他范围:
{
QTextStream out(&logPacketFile);
out << "[" << QDateTime::currentDateTime().toString("dd.MM.yy, hh:mm:ss") << "]: " << text << "\n";
}
logPacketFile.close();
将int
转换为QString
:
使用QString::number()。
使用当前代码输出:
"C:/.../logs/Packets/UserID [bad symbols here] - 17.11.14.log"
输出
QFile logPacketFile(logPacketsPath + "UserID " + QString::number(userID) + " - " + QDateTime::currentDateTime().toString("dd.MM.yy") + ".log");//removed colon
是:
这是大麻烦的根源。请参见下一步:
int userID = 70;
QString text = "test 1 2 3";
QFile logPacketFile(logPacketsPath + "UserID " + userID + " - " + QDateTime::currentDateTime().toString("dd.MM.yy") + ".log");
输出:
.../UserID F - 17.11.14.log"
注意F
,而不是70
,因为认为您使用的是简单字符,而字符中的70
是F
:
因此,我强烈建议您使用QString::number
来防止错误。将int
转换为QString
:
使用QString::number()。
使用当前代码输出:
"C:/.../logs/Packets/UserID [bad symbols here] - 17.11.14.log"
输出
QFile logPacketFile(logPacketsPath + "UserID " + QString::number(userID) + " - " + QDateTime::currentDateTime().toString("dd.MM.yy") + ".log");//removed colon
是:
这是大麻烦的根源。请参见下一步:
int userID = 70;
QString text = "test 1 2 3";
QFile logPacketFile(logPacketsPath + "UserID " + userID + " - " + QDateTime::currentDateTime().toString("dd.MM.yy") + ".log");
输出:
.../UserID F - 17.11.14.log"
注意F
,而不是70
,因为认为您使用的是简单字符,而字符中的70
是F
:
因此,我强烈建议您使用QString::number
,以防止出现错误。谢谢,我做了您告诉我的事情。错误是“:”。但是,谢谢!谢谢,我做了您告诉我的事情。错误是“:”。但是,谢谢!谢谢!但我认为我不必将int转换为QString。错误是使用“:”在filename中,@WouterHuysentruit QString没有接受int:4.8和5@user387443的构造函数,您应该转换,:是一个错误,但将int转换为QString也很重要。我添加了更好的解释,请查看。谢谢!但我认为我不必将int转换为QString。错误是使用“:”在filename中,@WouterHuysentruit QString没有接受int:4.8和5@user387443的构造函数,您应该转换,:是一个错误,但将int转换为QString也很重要。我添加了更好的解释,请查看。