仔细检查我的知识:Unicode

时间:2013-09-17 14:55:42

标签: c++

有这种方法:SCardListReaders,http://msdn.microsoft.com/en-us/library/windows/desktop/aa379793(v=vs.85).aspx

在MSDN上有一个例子。

此次电话会议后:

LPTSTR          pmszReaders = NULL;
LPTSTR          pReader;
lReturn = SCardListReaders(hSC,
                           NULL,
                           (LPTSTR)&pmszReaders,
                           &cch );

此类代码存在,它从多字符串 pmszReaders中提取字符串(多字符串以双空字符终止)。

pReader = pmszReaders;

while ( '\0' != *pReader )
{

     // Display the value.
     printf("Reader: %S\n", pReader );

     // Advance to the next value.
    pReader = pReader + wcslen((wchar_t *)pReader) + 1;
}

我的问题是。我认为上面的代码只适用于 Unicode 吗?如果我在项目中禁用Unicode支持,我认为上面的代码片段无法正确提取读者名称?不是吗?

例如,当我检查wcslen时,设置Unicode时返回22,而未设置Unicode时返回24。

1 个答案:

答案 0 :(得分:2)

如果您希望该功能在Unicode或MBCS版本中工作,请使用Microsoft特定的_tcslen而不是wcslen

如果您想要在没有Unicode的情况下使用该函数时出现编译时错误,请将LPTSTR更改为LPWSTR