gpt4 book ai didi

c++ - 当 printf 正确读取时,std::cout 从 vector 中读取垃圾?

转载 作者:行者123 更新时间:2023-11-28 05:13:57 24 4
gpt4 key购买 nike

在这段代码中:

// read bootrom
std::ifstream bootrom_file (bootrom_path, std::ios::binary | std::ios::ate);
const int bootrom_size = bootrom_file.tellg();
bootrom_file.seekg(0, std::ios_base::beg);
// allocate bootrom_size bytes for the bootrom vector
bootrom.resize(bootrom_size);
if(bootrom_size != 0x100)
{
std::cerr << "boot ROM is not 256 bytes!\n";
}
if(bootrom_file)
{
bootrom_file.read(reinterpret_cast<char*>(bootrom.data()), bootrom_size);
}
// prints 0xC3 0x31
printf("%#02x %#02x\n", rom[0], bootrom[0]);
// prints ? 1
std::cout << std::hex << rom[0] << " " << std::hex << bootrom[0] << "\n";

std::cout 打印出来 ? 1,但是 printf 打印出正确的 0xC3 0x31。我在这里做错了什么?

注意 rom 和 bootrom 都是 uint8_t 的 std::vector,并且 rom 使用与 bootrom 相同的代码设置。

最佳答案

解决方案:我想通了。结果是 std::cout 不能按值打印 uint8_t,因为它是一个 typedef 字符,所以它打印 ascii 字符。

关于c++ - 当 printf 正确读取时,std::cout 从 vector 中读取垃圾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43030764/

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