ile bir dizeye ikili dosya (jpg) oku Bir dizeye jpg dosyası okumalıyım. Bu dosyayı sunucumuza yüklemek istiyorum, sadece API'nın bu resimdeki veriler olarak bir dize gerektirdiğini öğreniyorum. Eski bir sorudaki önerileri Upload pics to a server using c++ sordum.C++
int main() {
ifstream fin("cloud.jpg");
ofstream fout("test.jpg");//for testing purpose, to see if the string is a right copy
ostringstream ostrm;
unsigned char tmp;
int count = 0;
while (fin >> tmp) {
++count;//for testing purpose
ostrm << tmp;
}
string data(ostrm.str());
cout << count << endl;//ouput 60! Definitely not the right size
fout << string;//only 60 bytes
return 0;
}
Neden 60'ta duruyor? 60 yaşında tuhaf bir karakter ve jpg'yi bir dizeye okumak için ne yapmalıyım?
GÜNCELLEME Neredeyse
ama çıkış dosyasına dize yeniden yazarken, önerilen yöntem kullanılarak sonra, bozuk. Ayrıca, akış yönünün ofstream::binary
tarafından ikili modda olduğunu belirtmem gerektiğini öğrenin. Bitti! ifstream::binary
& ios::binary
arasındaki fark ne arada
, ofstream::binary
için herhangi kısaltma var mıdır?
"ifstream :: binary" ve "ios :: binary", hatta "ofstream :: binary" arasında hiçbir fark yoktur. 'ikili', tüm iostream sınıflarının kökü olan ios_base' sınıfında tanımlanır. 'ios', hiyerarşideki' ios_base' ve 'istream'/'ostream' arasında kalan bir sınıf olan basic_ios' için bir yazım hatasıdır. Bunu kullanmak eğilimindedir çünkü yazması kolaydır. Hem "ifstream" hem de "ofstream" için ''ios :: binary '' yi kullanabilirsiniz. Hatta "ofstream" için "ifstream :: binary" ve tersini kullanabilirsiniz. –