我想從二進制文件中讀取無符號字節。 所以我寫了下面的代碼。從文件流中讀取無符號字符的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