注:API使用的char *,而不是爲const char *,所以我不能使用c_str()也函數調用sendCall是Aysnchronous呼叫字符串爲char *轉換爲非靜態字符串失敗
下面是我的代碼,它當我使用
char* payloadString = >&currString[0];
但是當我嘗試使用
char* payloadString = &secondCopy[0];
它失敗,我不能夠能明白其中的道理正常工作。我想在下面的代碼中創建一個像desiredString這樣的動態可更新字符串,該代碼將版本變量並將其分配給靜態字符串secondCopy,並且能夠使用該字符串代替currString,但我想我通過使用修改操作符的地址靜態字符串。請提出解決方法。
void functionName()
{
std::string version;
version = "ABC";
static std::string currString= "<Version=\"3.0\" Ret=\"false\"/>";
std::string desiredstring= "<Version="+version+" Ret=\"false\"/>";
static std::string secondCopy = desiredstring;
char* payloadString = &currString[0];
//char* payloadString = &secondCopy[0];
XDSC::Definition aDefinition("sname", "sid");
try
{
std::auto_ptr<otf::ClientSession> aSession;
aSession = getResources()->getManager().getSession("XML");
aSession->setAttachedToServerConversation(true);
aSession->setLogicalName("xyz");
aSession->setITOReturnPackage("svrc");
boost::shared_ptr<Payload> aPayload = boost::make_shared<Payload>(aDefinition, "3.0",payloadString, strlen(payloadString));
sendCall(aSession.get(), aPayload,"SRING", true);
}
catch(std::exception& e)
{
throw (exception(ERROR,"SendCall Failed to Send"));
}
}
爲什麼不直接使用'secondCopy.c_str()'? API是否只接受'char *'而不是'const char *'? – crashmstr
我試過使用c_str(),但它返回一個const char *,下面的函數需要一個char *而不是一個const char * –
不知道這是一個問題還是一個旁註,但是你的兩個版本字符串(除了'3.0'和'ABC')不一樣。 'currString'在值周圍有引號,'desiredString'沒有。 – crashmstr