c#中system::string 转c++中char*
时间: 2024-09-21 08:05:14 浏览: 43
C_经典项目经验总结
5星 · 资源好评率100%
在C#中,`System.String` 类代表字符串,而 C++ 中常用的字符串类型是 `std::string` 或者字符数组 `char*`。当你需要将 C# 的字符串转换成 C++ 的字符指针时,可以按照以下步骤操作:
1. **使用 C# 库提供的转换**:
如果使用 C++/CLI 编程,你可以使用 `Marshal.PtrToStringAnsi` 函数,如果字符串内容是 ASCII 字符,它会创建一个对应的 ANSI 零终止 C 字符串。示例:
```cpp
System::String^ s = "Hello";
IntPtr iptr = Marshal::PtrToStructure(IntPtr(s->ToPointer()), typeof(char*));
char* cStr = (char*)iptr.ToPointer();
```
2. **手动复制字符**:
如果没有使用 C++/CLI,你需要自己手动复制 C# 字符串的内容到 C++ 的字符数组。首先获取长度,然后逐个字符拷贝:
```cpp
System::String^ s = "Hello";
int length = s->Length;
char* cStr = new char[length];
for (int i = 0; i < length; ++i)
cStr[i] = static_cast<char>(s[i]);
cStr[length] = '\0'; // 添加零终止符
```
请注意,这种方法只适用于 ASCII 字符串,对于包含非 ASCII 字符(如 Unicode)的字符串,需要采用其他方式进行转换。
阅读全文