IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    如何:将 System::String 转换为标准字符串

    天下发表于 2015-12-14 07:46:00
    love 0
    //《精通.NET互操作:P/Invoke、C++ Interop和COM Interop》
    //ms-help://MS.VSCC.v90/MS.MSDNQTR.v90.chs/dv_vccore/html/79e2537e-d4eb-459f-9506-0e738045b59e.htm
    // convert_system_string.cpp
    // compile with: /clr
    #include <string>
    #include <iostream>
    using namespace std;
    using namespace System;

    void MarshalString ( String ^ s, string& os ) {
       using namespace Runtime::InteropServices;
       const char* chars = 
          (const char*)(Marshal::StringToHGlobalAnsi(s)).ToPointer();
       os = chars;
       Marshal::FreeHGlobal(IntPtr((void*)chars));
    }

    void MarshalString ( String ^ s, wstring& os ) {
       using namespace Runtime::InteropServices;
       const wchar_t* chars = 
          (const wchar_t*)(Marshal::StringToHGlobalUni(s)).ToPointer();
       os = chars;
       Marshal::FreeHGlobal(IntPtr((void*)chars));
    }

    int main() {
       string a = "test";
       wstring b = L"test2";
       String ^ c = gcnew String("abcd");

       cout << a << endl;
       MarshalString(c, a);
       c = "efgh";
       MarshalString(c, b);
       cout << a << endl;
       wcout << b << endl;
    }


    天下 2015-12-14 15:46 发表评论


沪ICP备19023445号-2号
友情链接