gpt4 book ai didi

c++ - substr() 不会采用参数化值

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:32:29 26 4
gpt4 key购买 nike

我的 substr() 命令有问题,我试图在示例内存管理模拟器中从一个地址中分离出两个不同的地址。在下面的示例中: LoadParameters 函数获取一组 VirtualMemSize 和 PageFrameLength 值,用于计算应从何处拆分位串。

在示例中,LoadParameters() 存储 VirtualMemSize 和 PageFrameLength 的值(分别为 20 和 8),它们是全局值。问题是代码只有在我输入数字代替参数时才有效。我试过将变量转换为类型 size_t 但没有成功:

int main(void) {
unsigned int VirtPageAddress;
unsigned int PhysPageAddress;
unsigned int OffsetAddress;

LoadParameters();
int VirtualAddress = 0xCAFEF00D;
string pagestring;

// Convert the hex address into a binary string and then
// split it into page index and offset.

string bitstring = bitset<sizeof(VirtualAddress) * 8>
(VirtualAddress).to_string();

cout << dec << VirtualMemSize << endl;
cout << dec << PageFrameLength << endl;
cout << bitstring << endl;

// (Reports: 20, 8 and "11001010111111101111000000001101"

// Extract relevant bits for the Page Index.

pagestring = bitstring.substr((32-VirtualMemSize),PageFrameLength);

// Convert the split string back into a number so that it
// can be manipulated.

VirtPageAddress = bitset<sizeof(pagestring)>
(pagestring).to_ulong();
cout << "0x" << hex << VirtPageAddress << endl;
return 0;
}

期望值:“0xef”

输出值:“0x0”

最佳答案

代码在使用 g++ 编译时按预期工作(在添加了一些您遗漏的包含和定义之后)。您使用的是什么编译器?

请记住 sizeof(pagestring) 返回类的大小,而不是它包含的字符串的大小;我怀疑这是您的意图,并且肯定会根据您的编译器/STL 实现而改变。您在该模板实例化中的真正含义是什么?

关于c++ - substr() 不会采用参数化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10373519/

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