C++ 表达式必须具有整型或枚举类型字符*

C++ 表达式必须具有整型或枚举类型字符*,c++,visual-studio-2010,qt,stdstring,C++,Visual Studio 2010,Qt,Stdstring,我有一个MFC项目,它做这样的事情 CString getTimeString(void) { 系统时间系统时间; CString-datestr GetSystemTime( &systemTime ); datestr.Format( "%02i/%02i/%04i, %02i:%02i:%02i", systemTime.wDay, systemTime.wMonth, systemTime.wYear, systemTime.wHour, systemTime.

我有一个MFC项目,它做这样的事情

CString getTimeString(void) { 系统时间系统时间; CString-datestr

GetSystemTime( &systemTime );

datestr.Format( "%02i/%02i/%04i, %02i:%02i:%02i",
    systemTime.wDay, systemTime.wMonth, systemTime.wYear,
    systemTime.wHour, systemTime.wMinute, systemTime.wSecond );

return ( datestr + "; " + get_file_info().PName.c_str() + ", " + get_version_info().PVersion.c_str() );
}

现在我在QT中复制类似的东西

char* getTimeString( void )
{
     QDateTime      systemTime = QDateTime::currentDateTime();
      QString       datestr  = systemTime.toString() ;



    /*GetSystemTime( &systemTime );

    datestr.Format( "%02i/%02i/%04i, %02i:%02i:%02i",
        systemTime.wDay, systemTime.wMonth, systemTime.wYear,
        systemTime.wHour, systemTime.wMinute, systemTime.wSecond );

*/

    return ( datestr.toStdString().c_str() + "; " + get_file_info().PName.c_str() + ", " + get_version_info().PVersion.c_str() );
}
它抛出一个错误
“表达式必须具有整型或枚举类型…”
仔细看,我意识到,因为它不是std::String,所以我们不能这样加起来。。
因此,我的问题是,我将如何以与VS2010(如上所示)完全相同的方式在QT中实现返回函数。

我将以以下方式实现:

[..]
return QString("%1; %2, %3")
               .arg(datestr)
               .arg(QString(get_file_info().PName.c_str()))
               .arg(QString(get_version_info().PVersion.c_str())).toLocal8Bit().data();

您好,eveyrone,我已经按照Vaqhancho的建议进行了更改,但出现了如下错误:\mydir\application\libs\lib\u know/FileVersioninfo.h(83):错误C2440:“默认参数”:无法从“int”转换为“know::FileVersionInfo::Pcalculator”1>源或目标具有不完整的类型1>C:\mydir\application\libs\lib\u know/FileVersionInfo.h(83):错误C2548:“know::init\u file\u version\u info”:参数1>MessaginInterface.cpp(32)缺少默认参数:错误C2143:语法错误:缺少“;”在“.”之前,实际上在其他项目中,使用CString的上述功能工作正常。我想知道这和QVariant有什么关系吗?我在发布回复之前也试过,但不起作用。我甚至尝试过这样的QString转换(const std::string&s){return QString::fromStdString(s);}char*getTimestampString(void){QDateTime systemTime=QDateTime::currentDateTime();QString datestr=systemTime.toString();return(QString(“%1;%2,%3”).arg(datestr).arg(convert(get_file_version_info().ProductName)).arg(convert(get_file_version_info().ProductVersion));//return(“稍后实现”)}我在不同的帖子中重新发布了我的qs(因为我认为它有不同的问题),有人建议“没有需要一个字符的arg重载,但我不明白他这句话的意思。