C++ cin>>byte 奇怪的行为
c++ cin>>byte strange behavior
我有以下代码
unsigned char input;
vector <unsigned char> buffer;
while (cin >>input){
buffer.push_back(input);
}
for (int i=0;i<buffer.size();i++)
cout<<std::hex<<(int)buffer.at(i)<<endl;
我用二进制文件调用程序
./program <<binary_file
其中包括:(从十六进制编辑器查看(
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0a 0x0b 0x0c 0x0d 0x0e 0x0f
0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1a 0x1b 0x1c 0x1d 0x1e 0x1f
然而,我得到以下输出:
0
1
2
3
4
5
6
7
8
e
f
10
11
12
13
14
15
16
17
18
19
1a
1b
1c
1d
1e
1f
如您所见,缺少"9"、"a"、"b"、"c"、"d"。你能解释一下出了什么问题吗?我是不是错过了一些重要的东西?感谢
或者你可以建议其他方法如何从cin加载二进制文件并将其存储在中吗
vector<unsigned char> buffer
字符0x09到0x0D是空白,因此operator>>
在提取值时会忽略这些字符。如果要读取未格式化的字符,请使用其中一个std::cin.get()
重载(如果在windows上编程,回车(0x0D(仍将作为行尾的一部分被忽略,除非以二进制模式重新打开标准输入流(。
还可以使用std::noskipws
操纵器禁用格式化输入函数的前导空格跳过。
相关文章:
- EASTL矢量<向量<int>>连续的
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- std::byte 指针应该用于指针算术吗?
- 在C++中,如何在变量中正确存储 BYTE 类型?
- C++如何将字符数组转换为字节向量(向量<byte>)
- 在 Eclipse 上启用 C++17 以使用 'std::byte'
- FreeFileSync C++错误:'byte'不是 'std' 的成员
- 为什么从 char 转换为 std::byte 可能是未定义的行为?
- 在 c++ 中以十六进制格式打印无符号字符(BYTE).使用 std::cout
- C++ 无法将 std::vector<BYTE> 转换为字符串或字符数组
- Visual accept std::string from std::byte iterator
- Android:使用 c++ 中的 byte[] 参数调用 java 方法
- 无法初始化以 std::byte 作为成员类型的位字段
- "byte":使用Crypto++和Windows SDK时出现不明确的符号错误
- 三维数组中的C/C++DWORD到BYTE和BYTE到DWORD的转换
- 如何将字符串加载到BYTE*数组(C++)的元素中
- JNI Java包装:如何传递byte[]参数
- 在 C++17 中表示 std::byte 文字的正确方法是什么?
- std::byte 可以取代 std::aligned_storage 吗?
- 初始化 std::byte 容器的正确方法