我知道使用向量是使用C++和STL時存儲二進制數據的好方法。但是對於我的單元測試,我想使用const char * C字符串變量來賦值vector。const char *向量<unsigned char>初始化
我試圖用這裏找到的代碼的變種 - Converting (void*) to std::vector<unsigned char> - 要做到這一點:
const char* testdata = "the quick brown fox jumps over the lazy dog.";
unsigned char* buffer = (unsigned char*)testdata;
typedef vector<unsigned char> bufferType;
bufferType::size_type size = strlen((const char*)buffer);
bufferType vec(buffer, size);
然而,VC++編譯器是不愉快的線初始化向量,指出:
error C2664: 'std::vector<_Ty>::vector(unsigned int,const _Ty &)' : cannot convert parameter 1 from 'char *' to 'unsigned int'
我明白這個問題的極端n00bity和我上面:)
由於提前,0上的代碼很多批評做好充分準備克里斯
你好得多使用: '的std ::矢量 VEC;'' vec.push_back(「敏捷的棕色狐狸跳過懶惰狗「。);' –
2012-03-21 06:43:48
被測試的代碼最終將用於處理二進制數據,因此,優先選擇vector。對於測試,我想用const char * data來初始化它。 –
2012-03-21 07:10:07
你可以簡單地通過'std :: string :: c_str()'獲得底層字符數據,並且可以節省很多使用原始指針的潛在問題。不是一個不好的交易IMO。 – 2012-03-21 07:12:19