से अहस्ताक्षरित चार पढ़ने मैं एक बाइनरी फ़ाइल से अहस्ताक्षरित बाइट्स पढ़ना चाहते हैं। इसलिए मैंने निम्नलिखित कोड लिखा था।सी ++ फ़ाइल धारा
#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 बाइट्स में हमेशा के रूप में पढ़ा जाता है जैसा वैरिएबल गिना जाता है।
वहाँ वेब कह मैं इस काम करने के लिए स्थान निर्धारित करने की आवश्यकता है कि पर संदर्भ होने लगते हैं। यह कैसे करें मुझे बिल्कुल स्पष्ट नहीं है।
एक ही कोड डेटा प्रकार 'अहस्ताक्षरित चार'
ऊपर कोड अहस्ताक्षरित चार विंडोज पर काम करने के लिए लगता है का उपयोग कर के बजाय 'चार' का उपयोग कर काम करता है लेकिन एक colinux फेडोरा 2.6.22.18 में चल विफल रहता है।
क्या मैं इसे लिनक्स के लिए काम करने के लिए पाने के लिए क्या करना होगा?
सवाल का एक जवाब नहीं है, लेकिन संबंधित।याद रखें कि सी ++ में स्ट्रिंग क्लास की परिभाषा 'typedef basic_string स्ट्रिंग है; ', ताकि आप हमेशा एक हस्ताक्षरित चार स्ट्रिंग क्लास ला ला टाइपिफ मूल_स्ट्रिंग bytestring;' बना सकें। –
सच है, लेकिन मैं एक बिनरी फ़ाइल – David
पढ़ना चाहता हूं .read() और .write() बाइनरी/टेक्स्ट के लिए उपयोग किया जा सकता है, स्ट्रीम ऑपरेटर << and >> केवल टेक्स्ट फ़ाइलों के लिए हैं। कंप्यूटर पर सभी डेटा अंततः द्विआधारी है, इस तरह आप इसे समझना चुनते हैं। – sfossen