То, что вы намеревались сделать, выглядит примерно так:
buffertype vec(testdata, next(testdata, strlen(testdata)));
Нет необходимости в промежуточной переменной buffer
.Преобразование из char
в unsigned char
будет происходить неявно.
Обратите внимание, что это не захватывает завершающий символ '\0'
из testdata
.Поэтому, если бы вы хотели иметь возможность сделать что-то вроде: cout << vec.data()
, вы бы не смогли.Если вы хотите, чтобы вы могли сделать: buffertype vec(testdata, next(testdata, strlen(testdata) + 1))
, или вы можете просто подумать:
basic_string<unsigned char> vec(testdata, next(testdata, strlen(testdata)));
, что сохранит скрытый '\0'
.Поскольку это не string
, вы не сможете это сделать, cout << vec
, но cout << vec.data()
сработает.Я создал Live Example каждого из них.