我知道使用向量是使用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