表达式必须具有整数或枚举类型Char *

时间:2013-12-03 20:01:02

标签: c++ visual-studio-2010 qt stdstring

我有一个类似这样的MFC项目

CString getTimeString(void) {     SYSTEMTIME systemTime;     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我们不能这样加起来.. 我的问题是如何在QT中实现返回功能的方式与在VS2010中完成的方式完全相同(如上所示)。

1 个答案:

答案 0 :(得分:1)

我会用以下方式做到这一点:

[..]
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();