将char转换为宽字符

时间:2013-03-08 04:20:59

标签: c++ windows char wchar

我正在尝试使用mbstowcs_s函数将一系列多字节字符转换为相应的宽字符序列。但我一直遇到以下堆损坏问题。谁能告诉我如何解决这个问题?

enter image description here

以下是示例代码。调试时,始终是导致问题的行delete wc_name。我知道不应该这样。

#include <Windows.h>
#include <iostream>
#include <string>
int main (int argc, char *argv[]) { 
    size_t returnValue; // The number of characters converted.
    const size_t sizeInWords = 50; // The size of the wcstr buffer in words
    const char* c_name = "nanana"; // The address of a sequence of characters
    wchar_t *wc_name = new wchar_t(50); 

    errno_t err = mbstowcs_s(&returnValue, wc_name, sizeInWords, 
                                              c_name, strlen(c_name) );

    wcout << wc_name << endl;
    delete wc_name;
    return 0;
}

1 个答案:

答案 0 :(得分:5)

wchar_t *wc_name = new wchar_t(50);应为wchar_t *wc_name = new wchar_t[50];分配数组。相应的delete wc_name应为delete[] wc_name;。顺便说一句,如果你在编译时知道数组的大小,就不需要动态内存分配了。您只需执行wchar_t wc_name[50];