Rozumiem, że używanie wektora jest dobrym sposobem przechowywania danych binarnych przy użyciu C++ i STL. Jednak w przypadku moich testów jednostkowych chciałbym zainicjować wektor za pomocą zmiennej łańcuchowej const char * C.const char * na wektor <unsigned char> Inicjalizacja
Ja próbuje użyć wariant kodu znaleźć tutaj - Converting (void*) to std::vector<unsigned char> - aby to zrobić:
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);
Jednak VC++ kompilator nie jest zadowolony z linii Inicjalizacja wektor, stwierdzając:
error C2664: 'std::vector<_Ty>::vector(unsigned int,const _Ty &)' : cannot convert parameter 1 from 'char *' to 'unsigned int'
doceniam ekstremalną n00bity to pytanie i jestem w pełni przygotowany na wiele krytyki na powyższym kodzie :)
góry dzięki, Chris
Jesteś znacznie lepiej wyłączyć za pomocą: 'std :: vector vec;' 'vec.push_back (" Szybki brązowy lis przeskoczył nad leniwym pies. ");' –
Testowany kod zostanie ostatecznie użyty do obsługi danych binarnych, stąd preferencja dla wektora. Do testów chciałbym zainicjować go za pomocą danych const char *. –
Możesz uzyskać podstawowe dane char po prostu używając 'std :: string :: c_str()', a zaoszczędzisz wiele potencjalnych problemów związanych z używaniem surowych wskaźników. Nie jest to zła oferta IMO. –