|

楼主 |
发表于 2012-10-4 12:38:47
|
显示全部楼层
5、从 CString 转换
- // convert_from_cstring.cpp
- // compile with: /clr /link comsuppw.lib
- #include <iostream>
- #include <stdlib.h>
- #include <string>
- #include "atlbase.h"
- #include "atlstr.h"
- #include "comutil.h"
- using namespace std;
- using namespace System;
- int main()
- {
- CString orig("Hello, World!");
- wcout << orig << " (CString)" << endl;
- // Convert to a char*
- const size_t newsize = 100;
- char nstring[newsize];
- strcpy_s(nstring, orig);
- strcat_s(nstring, " (char *)");
- cout << nstring << endl;
- // Convert to a wchar_t*
- // You must first convert to a char * for this to work.
- size_t origsize = strlen(orig) + 1;
- size_t convertedChars = 0;
- wchar_t wcstring[newsize];
- mbstowcs_s(&convertedChars, wcstring, origsize, orig, _TRUNCATE);
- wcscat_s(wcstring, L" (wchar_t *)");
- wcout << wcstring << endl;
- // Convert to a _bstr_t
- _bstr_t bstrt(orig);
- bstrt += " (_bstr_t)";
- cout << bstrt << endl;
- // Convert to a CComBSTR
- CComBSTR ccombstr(orig);
- if (ccombstr.Append(L" (CComBSTR)") == S_OK)
- {
- CW2A printstr(ccombstr);
- cout << printstr << endl;
- }
- // Convert to a basic_string
- string basicstring(orig);
- basicstring += " (basic_string)";
- cout << basicstring << endl;
- // Convert to a System::String
- String ^systemstring = gcnew String(orig);
- systemstring += " (System::String)";
- Console::WriteLine("{0}", systemstring);
- delete systemstring;
- }
复制代码
输出 Hello, World! (CString)Hello, World! (char *)Hello, World! (wchar_t *)Hello, World! (_bstr_t)Hello, World! (CComBSTR)Hello, World! (basic_string)Hello, World! (System::String) 6、从 basic_string 转换- // convert_from_basic_string.cpp
- // compile with: /clr /link comsuppw.lib
- #include <iostream>
- #include <stdlib.h>
- #include <string>
- #include "atlbase.h"
- #include "atlstr.h"
- #include "comutil.h"
- using namespace std;
- using namespace System;
- int main()
- {
- string orig("Hello, World!");
- cout << orig << " (basic_string)" << endl;
- // Convert to a char*
- const size_t newsize = 100;
- char nstring[newsize];
- strcpy_s(nstring, orig.c_str());
- strcat_s(nstring, " (char *)");
- cout << nstring << endl;
- // Convert to a wchar_t*
- // You must first convert to a char * for this to work.
- size_t origsize = strlen(orig.c_str()) + 1;
- size_t convertedChars = 0;
- wchar_t wcstring[newsize];
- mbstowcs_s(&convertedChars, wcstring, origsize, orig.c_str(), _TRUNCATE);
- wcscat_s(wcstring, L" (wchar_t *)");
- wcout << wcstring << endl;
- // Convert to a _bstr_t
- _bstr_t bstrt(orig.c_str());
- bstrt += " (_bstr_t)";
- cout << bstrt << endl;
- // Convert to a CComBSTR
- CComBSTR ccombstr(orig.c_str());
- if (ccombstr.Append(L" (CComBSTR)") == S_OK)
- {
- CW2A printstr(ccombstr);
- cout << printstr << endl;
- }
- // Convert to a CString
- CString cstring(orig.c_str());
- cstring += " (CString)";
- cout << cstring << endl;
- // Convert to a System::String
- String ^systemstring = gcnew String(orig.c_str());
- systemstring += " (System::String)";
- Console::WriteLine("{0}", systemstring);
- delete systemstring;
- }
复制代码 输出 Hello, World! (basic_string)Hello, World! (char *)Hello, World! (wchar_t *)Hello, World! (_bstr_t)Hello, World! (CComBSTR)Hello, World! (CString)Hello, World! (System::String) 7、从 System::String 转换
- // convert_from_system_string.cpp
- // compile with: /clr /link comsuppw.lib
- #include <iostream>
- #include <stdlib.h>
- #include <string>
- #include "atlbase.h"
- #include "atlstr.h"
- #include "comutil.h"
- #include "vcclr.h"
- using namespace std;
- using namespace System;
- using namespace System::Runtime::InteropServices;
- int main()
- {
- String ^orig = gcnew String("Hello, World!");
- Console::WriteLine("{0} (System::String)", orig);
- pin_ptr<const wchar_t> wch = PtrToStringChars(orig);
- // Convert to a char*
- size_t origsize = wcslen(wch) + 1;
- const size_t newsize = 100;
- size_t convertedChars = 0;
- char nstring[newsize];
- wcstombs_s(&convertedChars, nstring, origsize, wch, _TRUNCATE);
- strcat_s(nstring, " (char *)");
- cout << nstring << endl;
- // Convert to a wchar_t*
- wchar_t wcstring[newsize];
- wcscpy_s(wcstring, wch);
- wcscat_s(wcstring, L" (wchar_t *)");
- wcout << wcstring << endl;
- // Convert to a _bstr_t
- _bstr_t bstrt(wch);
- bstrt += " (_bstr_t)";
- cout << bstrt << endl;
- // Convert to a CComBSTR
- CComBSTR ccombstr(wch);
- if (ccombstr.Append(L" (CComBSTR)") == S_OK)
- {
- CW2A printstr(ccombstr);
- cout << printstr << endl;
- }
- // Convert to a CString
- CString cstring(wch);
- cstring += " (CString)";
- cout << cstring << endl;
- // Convert to a basic_string
- wstring basicstring(wch);
- basicstring += L" (basic_string)";
- wcout << basicstring << endl;
- delete orig;
- }
复制代码 输出 Hello, World! (System::String)Hello, World! (char *)Hello, World! (wchar_t *)Hello, World! (_bstr_t)Hello, World! (CComBSTR)Hello, World! (CString)Hello, World! (basic_string)完结!!OK了!
|
|