Мне нужно создать список LPSTR
и положить это вLPSTR
атрибут структуры.
typedef struct _wfs_pin_caps
{
...
LPSTR lpszExtra; //This attribute should receive
} WFSPINCAPS, * LPWFSPINCAPS;
Мне нужно что-то в этом роде.
WFSPINCAPS PinCapabilities;
list<LPSTR> Keys;
Keys[0] = (LPSTR) "value=key";
Keys[1] = (LPSTR) "value1=key1";
Keys[2] = (LPSTR) "value2=key2";
PinCapabilities.lpszExtra = Keys;
Мне нужно передать списки с различными значениями …
Это просто, просто сделай это
struct _wfs_pin_caps {
// ... other fields ...
std::list<const LPSTR> lpszExtra;
};
list<const LPSTR> &extra(PinCapabilities.lpszExtra);
extra.push_back(TEXT("value1=key1"));
extra.push_back(TEXT("value2=key2"));
// ... more items ...
extra.push_back(TEXT("valueN=keyN"));
Прочитать о TEXT
макрос так что вы вообще не делаете этот неловкий актерский состав, что неправильно, кстати.
Примечание: вам, вероятно, нужно std::vector
вместо этого, прочитайте их документацию, чтобы решить.
Это чистая вещь cen-xfs, поэтому просто знание C ++ недостаточно.
Все поля lpszExtra структур XFS являются специальными отформатированными C-строками.
Таким образом, правильный способ заполнить поле lpszExtra структуры возможностей xfs — использовать строку с двойным завершением NULL и разделенную NULL.
И так как все эти поля являются парами ключ-значение, формат имеет вид:
«key1 = value1 \ 0key2 = value2 \ 0 … \ 0keyN = valueN \ 0 \ 0» Обратите внимание, что здесь «keyX» НЕ означает определение ключа PINPAD, но формат всех данных поля XFS lpszExtra отформатирован так, что first key_name = -sign key_value.
То, как вы обрабатываете эти строки, зависит от вас, но я предпочитаю использовать обычные символы новой строки вместо ‘\ 0’ в качестве разделителей пары ключ-значение, а затем просто преобразовать их в / из этого в специфичный для XFS формат NULL, разделенный символами, и двойной формат NULL с завершением.
Таким образом, вы можете использовать обычные строковые методы C для манипуляции в вашем собственном коде.
Простое преобразование заключается в выделении памяти, копировании и замене ‘\ n’ на ‘\ 0’ и ‘\ 0’ на «\ 0 \ 0» при копировании из строки C в XFS и в обратном порядке при преобразовании из строки XFS в C.
Обратите внимание, что это применимо только к тем полям lpszExtra в структурах XFS.