c++ - 仔细检查我的知识 : Unicode

标签 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。

最佳答案

如果您希望函数在 Unicode 或 MBCS 构建中工作,请使用 Microsoft 特定的 _tcslen 而不是 wcslen

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

关于c++ - 仔细检查我的知识 : Unicode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18853185/

相关文章:

c++ - 在成员函数中我得到错误 "invalid use of undefined type ' struct (name )' - forward declaration of ' struct (name )' "

C++ : Null pointers and structs

c++ - 生成二维魔法六边形格子的算法

c++ - 如何初始化我在头文件中定义的 vector ?

c++ - 如何从 C++ 中的 PID 获取进程名称?

c++ - 从 C++ 调用带有可选参数的 Fortran 子例程

c++ - 访问指针类型的静态属性

c++ - const-promotion 在哪里定义

C++ - fmod 返回错误答案

c++ - 我的埃拉托色尼筛法耗时太长