我使用此代码将Qstring转换为gsoap标准wchar_t;
wchar_t *MGsoapQtChanger::toGsoap(QString str)
{
s= new wchar_t[str.size()+1];
int i=str.toWCharArray(s);
s[i]='\0';
return s;
}
它对我有用。但问题是在这里,我做新的wchar_t,我不删除它,因为我需要将它发送到我的客户端。我将它发送给我的客户后如何删除此变量。
///crunable.cpp///
#include "crunable.h"
CRunable::CRunable()
{
}
void CRunable::run()
{
c->serve();
c->destroy();
delete c;
}
void CRunable::setParam(calcService *c)
{
this->c=c;
}
///convert function///////
wchar_t *MGsoapQtChanger::toGsoap(QString str)
{
s= new wchar_t[str.size()+1];
int i=str.toWCharArray(s);
s[i]='\0';
return s;
}
///listen function//
void MListen::listen()
{
memcService calcS(SOAP_XML_INDENT);
if (calcS.run(80) != SOAP_OK)
calcS.soap_stream_fault(std::cerr);
calcS.destroy(); // same as:soap_destroy(calc.soap);
soap_end(calc.soap);
}
int memcService::uppercase(wchar_t *str, wchar_t *&r){
MGsoapQtChanger mg;
QString s= mg.toQt(str);
s=s.toUpper();
r=mg.toGsoap(s);
return SOAP_OK;
}
答案 0 :(得分:0)
通常,当您想要写new T[]
时,请改为编写vector<T>
。我没有找到一个合法的案例,除了实现vector
和string
之类的低级容器之外,我必须在C ++使用的几年中使用数组新形式。
但是,在这种特殊情况下,您还可以考虑wstring
:
wstring res;
res.resize(str.size());
int i = str.toWCharArray(&s[0]);
res.resize(i);
return res;