C++/CLI FAQ (逐步整理中)

來源:互聯網
上載者:User
1.  std::string,std::wstring與System::String^轉換

 1  /** \class sidle::StrHelper
 2      \brief std::string,std::wstring與System::String^轉換
 3      \author 吳爾平
 4      \version 1.0
 5      \date 2006.03.20 - 
 6      \bug 
 7      \warning
 8  */
 9  
10 namespace sidle
11 {
12     using namespace std;
13     using namespace System;
14     using namespace System::Text;
15 
16     class StrHelper
17     {
18     public:
19         static String^ Str2Refstr(const std::string& src) 
20         {
21             return gcnew String(src.c_str());
22         }
23 
24         static String^ Wstr2Refstr(const std::wstring& src) 
25         {
26             return gcnew String(src.c_str());
27         }
28 
29         static std::wstring Refstr2wstr(String^ src) 
30         {
31             pin_ptr<wchar_t> p = &(src->ToCharArray()[0]);
32             return std::wstring(p);
33         }
34 
35         static std::string Refstr2str(String^ src) 
36         {
37             //cli::array<Byte>^ buf = UnicodeEncoding::Convert(UnicodeEncoding::Unicode, UnicodeEncoding::GetEncoding("gb2312"), 
38             //    Encoding::Unicode->GetBytes(src));
39             cli::array<Byte>^ buf = Encoding::GetEncoding("gb2312")->GetBytes(src);
40             pin_ptr<Byte> p  = &(buf[0]);
41             return std::string((char*)p);
42         }
43     };
44 }
45 
46 void test_RefString_String()
47 {
48     using namespace sidle;
49     assert(StrHelper::Str2Refstr("中文str") == "中文str");
50     assert(StrHelper::Wstr2Refstr(L"中文wstr") == "中文wstr");
51     assert(StrHelper::Refstr2str("中文str") == string("中文str"));
52     assert(StrHelper::Refstr2wstr("中文wstr") == wstring(L"中文wstr"));
53 }
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.