У меня есть вектор строки и самопровозглашенной тип неподписанного символа:C++: как преобразовать элементы векторных строк в unsigned char?
std::vector<std::string> result;
typedef unsigned char BYTE;
BYTE data[11];
Я назначенные значения результата. Теперь я хочу, чтобы скопировать элементы result
в data
:
for (int i=0; i<11; i++)
{
data[i] = result[i];
}
Но он выдает ошибку, говоря No suitable conversion function from std::string to BYTE exists
.
Как я могу справиться с этим?
Update:
Во-первых, спасибо всем за ваши драгоценные комментарии и ответы. В моем коде, мой result
имеет шесть элементов, как эти ценности:
0x30
0x31
0x32
0x33
0x34
0x35
я попытался как ответ Raxvan, но в конце концов, data
захватывает только первое значение этих строк элементов, то есть, все нули. То, что я на самом деле хочу сделать, это позволить data
имеют то же значение, как result
, но BYTE
типа, так что он похож на присвоение значения, как это:
BYTE data[] = { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35 } // this line works correctly
невозможно в общем случае - потому что у вас есть неизвестное количество неизвестных строк длины, и попытаться положить все это в фиксированной длины 11 байт массива – DarkWanderer
It не имеет смысла преобразовать строку (произвольное количество символов) в один байт.Что вы на самом деле хотите в массиве 'data'? –
'std :: vector result;' эффективно представляет собой * двухмерный массив символов, чтобы получить индивидуальный символ, вы должны написать 'result [i] [j]'. Но «данные» * одномерные *, вот в чем проблема. Поэтому, вероятно, решение либо делает «результат» одномерным, либо делает «данные» двумерными. Не могу с этим поделать, потому что у меня больше нет картины. –
john