我已經下載了一個圖像,它被保存在std::string
。 現在我想用/有下列情況打開:C++字符串到uint8_t
typedef uint8_t byte //1 byte unsigned integer type.
static open(const byte * data, long size)
如何從string
轉換爲byte*
?
/編輯:
我已經嘗試過這樣的:
_data = std::vector<byte>(s.begin(), s.end());
//_data = std::vector<uint8_t>(s.begin(), s.end()); //also fails, same error
_p = &_data[0];
open(_p, _data.size())
,但我得到:
未定義的引用 '開放(無符號字符常量*長)'
爲什麼它錯誤地解釋字節作爲char ?!
/EDIT2: 只是爲了測試它,我改變函數調用來
open(*_p, _data.size())
但後來我得到:
error: no matching function for call to 'open(unsigned char&, size_t)'
[...] open(const byte*, long int) <near match>
所以功能definitly發現...
你甚至檢查過'string'類的引用嗎?如果你看看例如[this reference](http://en.cppreference.com/w/cpp/string/basic_string),你將很快看到_two_函數來幫助你解決問題。 –
爲什麼你將圖像數據存儲在'std :: string'中?字符串存儲一件事,只有一件事:**文本**。你應該使用不同的類(即一個字節向量)。 –
啊,現在我看到你已經在字符串中存儲了二進制數據......這正如前面的評論者所說的那樣不可取。原因是二進制圖像數據可以包含值0,這是用於終止字符串的相同值。所以把它放在一個字符串中最有可能會給你一小部分圖像。 –