C++ 表达式必须具有整型或枚举类型字符*
我有一个MFC项目,它做这样的事情 CString getTimeString(void) { 系统时间系统时间; CString-datestrC++ 表达式必须具有整型或枚举类型字符*,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.
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重载,但我不明白他这句话的意思。