2015-06-29 11 views
6

मैं std :: vector से QByteArray बनाने की कोशिश कर रहा हूं .. मैंने कोशिश की;qbyteArray में std :: vector <uint8_t> कैसे परिवर्तित करें?

std::vector<uint8_t> buf; 
QByteArray img = new QByteArray(reinterpret_cast<const char>(buf), buf.size()); 

हालांकि यह त्रुटि देता है;

error: invalid cast from type 'std::vector<unsigned char, std::allocator<unsigned char> >' to type 'const char' 

उत्तर

12

आप buf के बजाय buf.data() कास्ट करने के लिए की जरूरत है:

QByteArray* img = new QByteArray(reinterpret_cast<const char*>(buf.data()), buf.size()); 
+4

नोट '.data()' सी ++ 11 और बाद में ही उपलब्ध है। यदि आपका कंपाइलर इसका समर्थन नहीं करता है, तो '& buf [0] 'का उपयोग करें। – Saul

+0

जब मैं buf.data() का उपयोग करता हूं तो यह कहता है 'त्रुटि:' हस्ताक्षरित चार * 'से' कॉन्स्ट चार 'तक कास्ट सटीक' – goGud

+0

ओह खो देता है .. मेरी गलती, मैंने चार सूचक का उपयोग नहीं किया .. बहुत बहुत धन्यवाद – goGud