1. MSDN用法
MSDN链接地址: ms-help://MS.MSDNQTR.v90.chs/dv_vccore/html/385da01b-5649-4543-8076-e3e251243ff0.htm
#include <vcclr.h>
using namespace System;
bool To_string( String* source, string &target )
{
const __wchar_t __pin * wch = PtrToStringChars( source );
int len = (( source->Length+1) * 2);
char *ch = new char[ len ];
bool result = wcstombs( ch, wch, len ) != -1;
target = ch;
delete ch;
return result;
}
int _tmain(int argc, _TCHAR* argv[])
{
System::String* strSys("aaa10a");
string strTemp;
if(To_string(strSys, strTemp))
{
printf("%s \n", strTemp.c_str());
}
getchar();
return 0;
}
2. StringToHGlobalAnsi方式
StringToHGlobalAnsi将String的内容复制到本机堆,此方法需要动态分配堆内存。
using namespace System;
using namespace System::Runtime::InteropServices; System::String * str = S"Hello world\n"; char* str2 = (char*)(void*)Marshal::StringToHGlobalAnsi(str); printf(str2);3. System.String^与System.String*区别两者没有区别,只是vs环境配置的问题。默认情况下书写成System.String^,此时项目的 配置属性->常规->公共语言运行库支持项选择为: 公共语言运行库支持(/clr)System.String*时配置选择: 公共语言运行库支持,原来的语法 (/clr:oldSyntax)由此看来*是老旧的叫法,呵呵
本文详细介绍了MSDN中关于C#字符串操作的相关API,包括如何将字符串转换为字符数组,使用StringToHGlobalAnsi方法进行内存管理,以及System.String^与System.String*的区别。文章还提供了示例代码帮助开发者更好地理解和应用这些API。
785

被折叠的 条评论
为什么被折叠?



