MultiByteToWideChar无法正常工作

时间:2018-08-20 05:32:20

标签: c++ winapi visual-studio-2012 console-application

我正在尝试使用MultiByteToWideChar API。对于lpWideCharStr,当我使用带有动态内存分配的指针时,它可以正常工作。但是现在我应该使用具有静态内存分配的指针,如代码中所示。并且它无法正常工作,返回0。

这怎么了?

如何为lpWideCharStr中的MultiByteToWideChar使用静态内存分配的指针?

感谢您的解决方案。

#include <windows.h>
#include <iostream>
#include "Shlwapi.h"

#pragma comment(lib,"shlwapi.lib")

void main(int argc, char *argv[]){

    int iToSizeB = 0;
    iToSizeB = MultiByteToWideChar(CP_UTF8, 0, argv[1], -1 , NULL, 0);

    LPWSTR lpFileAddress[260] = {0};
    int nResult = 0;

    //MultiByteToWideChar function reurns 0 !!!
    nResult = MultiByteToWideChar(CP_UTF8, 0, argv[1], -1, lpFileAddress[0], iToSizeB);
}

1 个答案:

答案 0 :(得分:1)

可能是这个意思

WCHAR lpFileAddress[260] = {0};
nResult = MultiByteToWideChar(CP_UTF8, 0, argv[1], -1, lpFileAddress, iToSizeB);

在您的代码中,您定义WCHAR指针数组:LPWSTR lpFileAddress[260]而不是WCHAR数组,根据需要:WCHAR lpFileAddress[260] = {0};