C++ 在C+中作为属性传递列表+;
我需要创建一个C++ 在C+中作为属性传递列表+;,c++,dll,cen-xfs,C++,Dll,Cen Xfs,我需要创建一个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
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;
WFSPINCAPS能力;
列出键;
键[0]=(LPSTR)“值=键”;
键[1]=(LPSTR)“value1=key1”;
键[2]=(LPSTR)“value2=key2”;
PinCapabilities.lpszExtra=密钥;
我需要传递具有各种值的列表…很简单,只需这样做
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"));
struct\u wfs\u pin\u caps{
//……其他领域。。。
std::列表lpszExtra;
};
列表和额外(PinCapabilities.lpszExtra);
额外。推回(文本(“value1=key1”);
额外。推回(文本(“value2=key2”);
// ... 更多项目。。。
额外。推回(文本(“valueN=keyN”);
请阅读,这样你就不会做那个尴尬的演员,顺便说一句,这是错误的
注意:您可能需要
std::vector
而不是阅读他们的文档来决定。很简单,只需这样做
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"));
struct\u wfs\u pin\u caps{
//……其他领域。。。
std::列表lpszExtra;
};
列表和额外(PinCapabilities.lpszExtra);
额外。推回(文本(“value1=key1”);
额外。推回(文本(“value2=key2”);
// ... 更多项目。。。
额外。推回(文本(“valueN=keyN”);
请阅读,这样你就不会做那个尴尬的演员,顺便说一句,这是错误的
注意:你可能需要
<> P>注意,这仅适用于XFS结构中的那些LPSZOUT字段。 < P>这是一个纯CEN XFS的东西,所以仅仅C++知识是不够的。 XFS结构的所有lpszExtra字段都是特殊格式的C字符串 因此,填充xfs capabilities结构的lpszExtra字段的正确方法是使用双空终止和空分隔字符串。 由于所有这些字段都是键值对,因此格式为: “key1=value1\0key2=value2\0…\0keyN=valueN\0\0” 注意这里的“keyX”并不是指PINPAD键定义,而是指所有XFS lpszExtra字段数据的格式化方式,因此第一个key_name=-sign key_value 如何处理这些字符串取决于您,但我喜欢使用普通换行符而不是“\0”作为键值对分隔符,然后将其转换为XFS特定的空字符分隔和双空终止格式 这样,您就可以在自己的代码中使用普通的C字符串方法进行操作 简单的转换是在从C字符串复制到XFS时分配内存,将“\n”复制并交换到“\0”,将“\0”交换到“\0\0”,并在从XFS转换到C字符串时进行反向转换
注意,这仅适用于XFS结构中的lpszExtra字段。如果您必须强制转换以使字符串正常工作,则表明您正在做一些危险和错误的事情。在本例中,您正在丢弃constness,而且一眼就看不出您在这样做。在
LPSTR
中存储指向std::list
的指针真的没有意义。为什么不在struct
中有一个std::list*
?最终的程序需要多个值,比如array@MatheusCardozo请阅读我的更新,我认为它是清楚的。@IharobAlAsimi好的,伙计……我会证明如果你必须施展才能让绳子起作用,那就是你在做危险和错误的事情的迹象。在本例中,您正在丢弃constness,而且一眼就看不出您在这样做。在LPSTR
中存储指向std::list
的指针真的没有意义。为什么不在struct
中有一个std::list*
?最终的程序需要多个值,比如array@MatheusCardozo请阅读我的更新,我认为它是清楚的。@IharobAlAsimi好的,伙计…我会测试嘿,伙计,我需要传递具有各种值的列表,结构不是要更改的OP代码TEXT
也不是用于LPSTR
,而是用于LPTSTR
。如果字符串更改为宽字符串,TEXT
将开始产生编译器错误。不管怎么说,T字串现在已经过时了<代码>文本也不能修复强制转换,因为文本
与常量正确性无关。至于const
,它将不起作用,因为LPSTR
是一个char*
,使const-LPSTR
成为一个char*const
。更常见的拼写是LPCSTR
@Iharob Al-Asimi-guy,我需要使用这个结构:typedef-struct\u-wfs\u-pin\u-caps{…LPSTR-lpszExtra;//这个属性应该接收}WFSPINCAPS,*LPWFSPINCAPS;你不能,那就创建一个结构列表。嘿,伙计,我需要传递具有各种值的列表。毫无疑问,结构不是OP要更改的代码TEXT
也不是用于LPSTR
,而是用于LPTSTR
。如果字符串更改为宽字符串,TEXT
将开始产生编译器错误。不管怎么说,T字串现在已经过时了<代码>文本也不会修复演员阵容,就像文本一样<