我想从二进制文件中读取无符号字节。 所以我写了下面的代码。从文件流中读取无符号字符的C++
#include <iostream>
#include <fstream>
#include <vector>
#include <istream>
std::string filename("file");
size_t bytesAvailable = 128;
size_t toRead = 128;
std::basic_ifstream<unsigned char> inf(filename.c_str(), std::ios_base::in | std::ios_base::binary) ;
if (inF.good())
{
std::vector<unsigned char> mDataBuffer;
mDataBuffer.resize(bytesAvailable) ;
inF.read(&mDataBuffer[0], toRead) ;
size_t counted = inF.gcount() ;
}
这会导致读数始终为0字节,如变量计数所示。
似乎有网上的参考资料,说我需要设置语言环境来完成这项工作。如何做到这一点是不明确的。
相同的代码工作使用的数据类型,而不是“无符号的字符”
使用无符号字符似乎在Windows上运行上面的代码“字符”,但在coLinux的Fedora的2.6.22.18失败运行。
我需要做些什么才能让它适用于Linux?
不是一个问题的答案,但相关的。请记住,C++中字符串类的定义是`typedef basic_string string;`,所以你总是可以使一个unsigned char字符串类成为``typedef basic_string bytestring;`。 –
2009-03-02 23:47:11
是真的,但我想读取一个BINARY文件 – David 2009-03-03 06:29:06
.read()和.write()可用于二进制/文本,流操作符<< and >>仅用于文本文件。计算机上的所有数据最终都是二进制的,这就是你如何选择解释它。 – sfossen 2009-03-03 15:35:11