gpt4 book ai didi

C++ 无法让 cin 从文件重定向中读取结束行字符

转载 作者:行者123 更新时间:2023-11-28 03:37:47 28 4
gpt4 key购买 nike

这是我第一次发帖,请耐心等待。

我有一个文件,我需要通过重定向读取 header ,我正在使用 cin 捕获字节并存储它们供以后使用。

文件的 hexdump 是:

42 02 02 02 ff 0a 00 00  00 19 00 00 00 ff

我有什么:

char magic, cs1, cs2, cs3, selector;
char temp1, temp2, temp3, temp4;
cin >> magic;
cin >> cs1;
cin >> cs2;
cin >> cs3;
cin >> selector;
//
cin >> temp1;
cin >> temp2;
cin >> temp3;
cin >> temp4;

前5个字节分别代表magicNumber、channelSize、channelSize、channelSize、selectorBit。接下来的 4 个字节是宽度值,从 LSB 到 MSB 分成 4 个字节。

当我在十六进制为 10(我想要的值)的 0a 上使用 cin 时,它会将其读取为换行符并因此跳过它。

cout << temp1 << endl;
cout << temp2 << endl;
cout << temp3 << endl;
cout << temp4 << endl;

这将包含(十六进制):

0
0
0
19

cin 跳过 0a 并获取下一个值。有没有办法强制它读取 0a?

如果需要更多信息,请告诉我。谢谢

-- 凯尔

最佳答案

这是因为 cin ,这是一个 istream期望数据是文本。

如果您使用的是二进制数据,那么 istream::getistream::read是您正在寻找的。

std::cin.get(temp1)
std::cin.get(temp2)
std::cin.get(temp3)
std::cin.get(temp4)

从输入流中检索四个字节值。

char buff[4];
std::cin.read(buff, 4);

将为您将数据 block 读入一个字符数组。您可以使用普通整数如果字节序与数据匹配。

关于C++ 无法让 cin 从文件重定向中读取结束行字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10346413/

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