gpt4 book ai didi

c++ - 转换 char* 时的不同值

转载 作者:行者123 更新时间:2023-11-28 06:24:16 26 4
gpt4 key购买 nike

我必须将 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

最佳答案

这个

 char* ConvertToC(string value){

应该是引用参数

 char* ConvertToC(string& value){
// ^

否则返回的地址指的是一个临时拷贝,并在函数调用后变为无效。

关于c++ - 转换 char* 时的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com