我必须将token[1]
转换为vm_address_t
,但这样做时原始值就会丢失。知道如何转换/投射它吗?
这是我的代码:
char* ConvertToC(string value){
char *cvalue = &value[0u];
return cvalue;
}
const char* getOffsetToken(string value){
const char *offsettoken;
int n = 0;
const char* token[4] = {};
token[0] = strtok(ConvertToC(value), " ");
if (token[0]) {
for (n = 1; n < 4; n++) {
token[n] = strtok(0, " ");
if (!token[n]) break;
}
}
offsettoken=token[1];
return offsettoken;
}
int main(){
vm_address_t vmp;
const char* cp;
string p1 = "1 0x1000 2 0x0120";
cout << getOffsetToken(p1)<<endl;
cp=getOffsetToken(p1);
cout << cp<<endl;
vmp<<(vm_address_t)cp;
cout << vmp<<endl;
}
输出结果为:
0x10 ?
0x1000
140734705163168
答案 0 :(得分:1)
这个
char* ConvertToC(string value){
应该是参考参数
char* ConvertToC(string& value){
// ^
否则返回的地址是指临时副本,并在函数调用后变为无效。