我知道在C++和STL中使用向量是存储二进制数据的好方法。但是对于我的单元测试,我想使用const char* C字符串变量初始化向量。
我正在尝试使用在此处找到的代码的变体- 将(void*)转换为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'
我很欣赏这个问题的极度新手性,对上面的代码做出批评也有充分的准备:)
提前感谢, Chris
`std::vector vec;`
`vec.push_back("the quick brown fox jumps over the lazy dog.");`
- Alok Savestd::string::c_str()
简单地获取底层的 char 数据,这样你就可以避免使用裸指针带来的潜在问题。在我看来,这不是一个坏交易。 - Alok Save