zoukankan      html  css  js  c++  java
  • [C# Tip]How to: Convert System::String to wchar_t* or char*

    (MSDN)You can use PtrToStringChars in Vcclr.h to convert String to native wchar_t * or char *. This always returns a wide Unicode string pointer because CLR strings are internally Unicode. You can then convert from wide as shown in the following example.

    Example

    // convert_string_to_wchar.cpp
    // compile with: /clr
    #include < stdio.h >
    #include < stdlib.h >
    #include < vcclr.h >

    using namespace System;

    int main() {
    String ^str = "Hello";

    // Pin memory so GC can't move it while native function is called
    pin_ptr<const wchar_t> wch = PtrToStringChars(str);
    printf_s("%S\n", wch);

    // Conversion to char* :
    // Can just convert wchar_t* to char* using one of the
    // conversion functions such as:
    // WideCharToMultiByte()
    // wcstombs_s()
    // ... etc
    size_t convertedChars = 0;
    size_t sizeInBytes = ((str->Length + 1) * 2);
    errno_t err = 0;
    char *ch = (char *)malloc(sizeInBytes);

    err = wcstombs_s(&convertedChars,
    ch, sizeInBytes,
    wch, sizeInBytes);
    if (err != 0)
    printf_s("wcstombs_s failed!\n");

    printf_s("%s\n", ch);
    }

    Output

    Hello
    Hello
  • 相关阅读:
    Matrix Power Series
    Recursive sequence HDU5950
    P2151 [SDOI2009]HH去散步
    P4273 [NOI2004] 降雨量
    P1034 [NOIP2002 提高组] 矩形覆盖
    P1027 [NOIP2001 提高组] Car 的旅行路线
    Win10使用Dism++离线安装.Net3.5
    WPF之模板
    WPF之资源
    WPF之命令
  • 原文地址:https://www.cnblogs.com/taoxu0903/p/1819498.html
Copyright © 2011-2022 走看看