Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+中作为属性传递列表+;_C++_Dll_Cen Xfs - Fatal编程技术网

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>这是一个纯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字符串时进行反向转换


<> 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字串现在已经过时了<代码>文本也不会修复演员阵容,就像
文本一样<