我有一條String消息,我將字符串拆分並將其存儲在一個結構中。C++中的結構值打印不正確
struct logMessage
{
int cefVersion;
char *deviceVendor;
char *deviceProduct;
char *deviceVersion;
int signatureID;
char *eventName;
int severity;
char *objectIp;
char *cs2;
char *suser;
int logonID;
char *logonType;
};
我已經拆分了字符串並將其存儲在結構中我的代碼是這樣的。
'split(string str)
{
string logmsg=str;
logMessage lmsg;
string delimiter = "|";
size_t pos = 0;
string token;
int tokens=1;
while ((pos = logmsg.find(delimiter)) != string::npos) {
token = logmsg.substr(0, pos);
cout <<"\n"<< token <<endl;
logmsg.erase(0, pos + delimiter.length());
switch(tokens){
case 1:lmsg.cefVersion=atol((char *)token.c_str());
cout<<"\t token="<<token.c_str();
break;
case 2:lmsg.deviceVendor=(char *)token.c_str();
cout<<"\t token="<<token.c_str()<<"\tlmsg.deviceVendor="<<lmsg.deviceVendor;
cout<<"\nmessage stored in the sturcture=deviceVendor:"<<lmsg.deviceVendor;
break;
case 3:lmsg.deviceProduct=(char *)token.c_str();
cout<<"\nmessage stored in the sturcture=deviceProduct:"<<lmsg.deviceProduct;
cout<<"\t token="<<token.c_str()<<"\tlmsg.deviceProduct="<<lmsg.deviceProduct;break;
case 4:lmsg.deviceVersion=(char *)token.c_str();
cout<<"\t token="<<token.c_str();break;
case 5:lmsg.signatureID=atol((char *)token.c_str());
cout<<"\t token="<<token.c_str();break;
case 6:lmsg.eventName=(char *)token.c_str();
cout<<"\t token="<<token.c_str();break;
case 7:lmsg.severity=atol((char *)token.c_str());
cout<<"\t token="<<token.c_str();break;
}
tokens++;
cout<<"\ntokens="<<tokens;
//#cout<<"\nmessage stored in the sturcture=deviceProduct:"<<lmsg.deviceProduct;
}
//#cout<<"\nmessage stored in the sturcture=cefVersion:"<<lmsg.cefVersion;
//#cout<<"\nmessage stored in the sturcture=deviceProduct:"<<lmsg.deviceProduct;
//#cout<<"\nmessage stored in the sturcture=signatureID:"<<lmsg.signatureID;
//cout<<"\nmessage stored in the sturcture=eventName:"<<lmsg.eventName;
//cout<<"\nmessage stored in the sturcture=severity:"<<lmsg.severity;
logmsg=str;
std::cout << logmsg << std::endl;
}'
在上面的代碼註釋#行不能正常工作,它正在打印一些其他值。除了這一切工作正常,我不明白爲什麼會發生。
你可以在你的問題中包含控制檯的輸出(出錯的行)嗎?由於我們沒有你的輸入數據,所以很難猜到...... – tofi9