首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将System :: String ^转换为std :: string?

将System :: String ^转换为std :: string的方法是使用System::Runtime::InteropServices::Marshal::StringToHGlobalAnsi函数将System :: String ^转换为char ,然后再使用std :: string构造函数将char 转换为std :: string。

下面是示例代码:

代码语言:cpp
复制
#include <msclr/marshal.h>
#include <string>

using namespace System;
using namespace System::Runtime::InteropServices;

std::string ConvertSystemStringToStdString(System::String^ systemString)
{
    const char* chars = (const char*)(Marshal::StringToHGlobalAnsi(systemString)).ToPointer();
    std::string stdString(chars);
    Marshal::FreeHGlobal(IntPtr((void*)chars));
    return stdString;
}

int main()
{
    System::String^ systemString = "Hello, World!";
    std::string stdString = ConvertSystemStringToStdString(systemString);
    return 0;
}

这个方法使用了msclr/marshal.h头文件中的marshal命名空间,其中包含了用于在托管代码和本机代码之间进行字符串转换的功能。在示例代码中,我们定义了一个名为ConvertSystemStringToStdString的函数,它接受一个System :: String ^参数并返回一个std :: string。函数内部使用Marshal::StringToHGlobalAnsi函数将System :: String ^转换为char ,然后使用std :: string构造函数将char 转换为std :: string。最后,我们在main函数中演示了如何使用这个函数进行转换。

请注意,这个方法只适用于将System :: String ^转换为std :: string,如果需要将System :: String ^转换为其他类型的字符串,可能需要使用不同的方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券