std::-6ren">
gpt4 book ai didi

C++ std::istringstream 奇怪的 std::hex 行为

转载 作者:行者123 更新时间:2023-11-30 04:01:20 25 4
gpt4 key购买 nike

编辑:

我设法在较小规模上解决了同样的问题:

std::istringstream hex;
std::string str = "0x7ffa428ab946";
std::cout << "str " << str << std::endl;
hex.str(str);
long caller;
hex >> std::hex >> caller;
std::cout << "caller " << caller << std::endl;
str = "0x7ff9ec0010f0";
std::cout << "str " << str << std::endl;
hex.str(str);
long address;
hex >> std::hex >> address;
std::cout << "address " << address << std::endl;

得到这个:

str 0x7ffa428ab946
caller 140712834939206
str 0x7ff9ec0010f0
address 0

这是为什么?

最佳答案

hex >> std::hex >> caller;

将在 hex 上设置 eofbit,但随后的

hex.str(str);

不清除它。因此,以后从 hex 中提取的尝试将完全失败。

hex.str(str); 调用之后调用 hex.clear() 以清除标志。

关于C++ std::istringstream 奇怪的 std::hex 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25834360/

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