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也很重要。我添加了更好的解释,请查看。