Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.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++ 在mbstowcs_函数SizeInWords参数的上下文中,单词的大小是多少?_C++_Windows_Api_Wchar_Tchar - Fatal编程技术网

C++ 在mbstowcs_函数SizeInWords参数的上下文中,单词的大小是多少?

C++ 在mbstowcs_函数SizeInWords参数的上下文中,单词的大小是多少?,c++,windows,api,wchar,tchar,C++,Windows,Api,Wchar,Tchar,在Windows API函数mbstowcs_的上下文中,我很难确定单词的确切大小。以下是MSDN中的相关信息以及链接 mbstowcs\u s,\u mbstowcs\u s\l 将多字节字符序列转换为相应的宽字符序列。mbstowcs和_mbstowcs _l的版本,具有CRT安全功能中所述的安全增强功能 参数 [out]pReturnValue-转换的字符数 [out]wcstr—生成的转换宽字符串的缓冲区地址 [in]sizeInWords-wcstr缓冲区的大小(以字为单位) [in]

在Windows API函数mbstowcs_的上下文中,我很难确定单词的确切大小。以下是MSDN中的相关信息以及链接

mbstowcs\u s,\u mbstowcs\u s\l

将多字节字符序列转换为相应的宽字符序列。mbstowcs和_mbstowcs _l的版本,具有CRT安全功能中所述的安全增强功能

参数

[out]pReturnValue-转换的字符数

[out]wcstr—生成的转换宽字符串的缓冲区地址

[in]sizeInWords-wcstr缓冲区的大小(以字为单位)

[in]mbstr—以空结尾的多字节字符序列的地址

[in]count—要存储在wcstr缓冲区中的最大宽字符数,不包括终止null或_TRUNCATE

以下是指向MSDN页面的链接:


有什么想法吗?

通常一个单词的意思是16位


为了确保这一点,分配一个100字节的缓冲区,用0xff填充它们。然后为sizeInWords传递16,并传递至少16个字符的mbstr。在调试器中,在调用完成时检查wcstr。如果我是对的,缓冲区的前32个字节将有字符值,其余的仍然是0xff。(当然,这忽略了wcstr的某些值可能是0xff的事实)

缓冲区中的
wchar\u t
s的数量是
wcstr
指向的to@Praetorian所以它本质上是缓冲区的长度(以宽字符为单位)。。。似乎用词来描述参数是错误的。。。如果你将此作为答复,我将接受。我没有足够的声誉在这个时候支持你的评论。我同意,更好的措辞应该和你说的一模一样。。。缓冲区中的宽字符数。我怀疑这是Windows API术语泄漏到文档中的一种情况,因为WinAPI使用
WORD
作为16位无符号int的typedef,并且
wchar\u t
在Windows上也是16位的。无论如何,你已经有了答案(虽然我不同意他的第一句话,这有点偏离了实际问题的答案),我不会再添加一个,因为我没有任何证据证明我所说的是正确的。谢谢你的建议。我会给它一个镜头(或类似的东西),让你知道它是如何进行的。