您的位置:首页 > 其它

VC 6.0编译器错误整理

2009-11-18 08:49 281 查看
Visual C++ 如何:在各种字符串类型之间进行转换,VC技术文章,VC

[ http://www.diybl.com/course/3_program/vc/vc_js/2008614/125288.html ]
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>

...

Visual C++ 如何:在各种字符串类型之间进行转换

www.diybl.com 时间:2008-06-14 作者:佚名 编辑:本站点击: 
721
[评论]

(转)Visual C++ 如何:在各种字符串类型之间进行转换

本主题演示如何将各种 C++ 字符串类型转换为其他字符串。可以转换的字符串类型包括
char *

wchar_t*
、_bstr_t、CComBSTR、CString、basic_string 和 System.String。在所有情况下,在将字符串转换为新类型时,都会创建字符串的副本。对新字符串进行的任何更改都不会影响原始字符串,反之亦然。

从 char * 转换

示例

说明

此示例演示如何从
char *
转换为上面列出的其他字符串类型。

// convert_from_char.cpp

// compile with /clr /link comsuppw.lib

#include

#include

#include

#include "atlbase.h"

#include "atlstr.h"

#include "comutil.h"

using namespace std;

using namespace System;

int main()

{

char *orig = "Hello, World!";

cout << orig << " (char *)" << endl;

// Convert to a wchar_t*

size_t origsize = strlen(orig) + 1;

const size_t newsize = 100;

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 CString

CString cstring(orig);

cstring += " (CString)";

cout << cstring << 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! (char *)

Hello, World! (wchar_t *)

Hello, World! (_bstr_t)

Hello, World! (CComBSTR)

Hello, World! (CString)

Hello, World! (basic_string)

Hello, World! (System::String)

从 wchar_t * 转换

示例

说明

此示例演示如何从
wchar_t *
转换为上面列出的其他字符串类型。

// convert_from_wchar_t.cpp

// compile with /clr /link comsuppw.lib

#include

#include

#include

#include "atlbase.h"

#include "atlstr.h"

#include "comutil.h"

using namespace std;

using namespace System;

int main()

{

wchar_t *orig = L"Hello, World!";

wcout << orig << L" (wchar_t *)" << endl;

// Convert to a char*

size_t origsize = wcslen(orig) + 1;

const size_t newsize = 100;

size_t convertedChars = 0;

char nstring[newsize];

wcstombs_s(&convertedChars, nstring, origsize, orig, _TRUNCATE);

strcat_s(nstring, " (char *)");

cout << nstring << 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 CString

CString cstring(orig);

cstring += " (CString)";

cout << cstring << endl;

// Convert to a basic_string

wstring basicstring(orig);

basicstring += L" (basic_string)";

wcout << basicstring << endl;

// Convert to a System::String

String ^systemstring = gcnew String(orig);

systemstring += " (System::String)";

Console::WriteLine("{0}", systemstring);

delete systemstring;

}

输出

Hello, World! (wchar_t *)

Hello, World! (char *)

Hello, World! (_bstr_t)

Hello, World! (CComBSTR)

Hello, World! (CString)

Hello, World! (basic_string)

Hello, World! (System::String)

从 _bstr_t 转换

示例

说明

此示例演示如何从
_bstr_t
转换为上面列出的其他字符串类型。

// convert_from_bstr_t.cpp

// compile with /clr /link comsuppw.lib

#include

#include

#include

#include "atlbase.h"

#include "atlstr.h"

#include "comutil.h"

using namespace std;

using namespace System;

int main()

{

_bstr_t orig("Hello, World!");

wcout << orig << " (_bstr_t)" << endl;

// Convert to a char*

const size_t newsize = 100;

char nstring[newsize];

strcpy_s(nstring, (char *)orig);

strcat_s(nstring, " (char *)");

cout << nstring << endl;

// Convert to a wchar_t*

wchar_t wcstring[newsize];

wcscpy_s(wcstring, (wchar_t *)orig);

wcscat_s(wcstring, L" (wchar_t *)");

wcout << wcstring << endl;

// Convert to a CComBSTR

CComBSTR ccombstr((char *)orig);

if (ccombstr.Append(L" (CComBSTR)") == S_OK)

{

CW2A printstr(ccombstr);

cout << printstr << endl;

}

// Convert to a CString

CString cstring((char *)orig);

cstring += " (CString)";

cout << cstring << endl;

// Convert to a basic_string

string basicstring((char *)orig);

basicstring += " (basic_string)";

cout << basicstring << endl;

// Convert to a System::String

String ^systemstring = gcnew String((char *)orig);

systemstring += " (System::String)";

Console::WriteLine("{0}", systemstring);

delete systemstring;

}

输出

Hello, World! (_bstr_t)

Hello, World! (char *)

Hello, World! (wchar_t *)

Hello, World! (CComBSTR)

Hello, World! (CString)

Hello, World! (basic_string)

Hello, World! (System::String)

从 CComBSTR 转换

示例

说明

此示例演示如何从
CComBSTR
转换为上面列出的其他字符串类型。

// convert_from_ccombstr.cpp

// compile with /clr /link comsuppw.lib

#include

#include

#include

#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()

{

CComBSTR orig("Hello, World!");

CW2A printstr(orig);

cout << printstr << " (CComBSTR)" << endl;

// Convert to a char*

const size_t newsize = 100;

char nstring[newsize];

CW2A tmpstr1(orig);

strcpy_s(nstring, tmpstr1);

strcat_s(nstring, " (char *)");

cout << nstring << endl;

// Convert to a wchar_t*

wchar_t wcstring[newsize];

wcscpy_s(wcstring, orig);

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 CString

CString cstring(orig);

cstring += " (CString)";

cout << cstring << endl;

// Convert to a basic_string

wstring basicstring(orig);

basicstring += L" (basic_string)";

wcout << basicstring << endl;

// Convert to a System::String

String ^systems

...

-------------------------------------------------------------------------------------------------

...
tring = gcnew String(orig);

systemstring += " (System::String)";

Console::WriteLine("{0}", systemstring);

delete systemstring;

}

输出

Hello, World! (CComBSTR)

Hello, World! (char *)

Hello, World! (wchar_t *)

Hello, World! (_bstr_t)

Hello, World! (CString)

Hello, World! (basic_string)

Hello, World! (System::String)

从 CString 转换

示例

说明

此示例演示如何从
CString
转换为上面列出的其他字符串类型。

// convert_from_cstring.cpp

// compile with /clr /link comsuppw.lib

#include

#include

#include

#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)

从 basic_string 转换

示例

说明

此示例演示如何从
basic_string
转换为上面列出的其他字符串类型。

// convert_from_basic_string.cpp

// compile with /clr /link comsuppw.lib

#include

#include

#include

#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)

从 System::String 转换

示例

说明

此示例演示如何从
System.String
转换为上面列出的其他字符串类型。

// convert_from_system_string.cpp

// compile with /clr /link comsuppw.lib

#include

#include

#include

#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

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)
...
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: