将String ^转换为const char * [vs c ++]

时间:2010-08-30 15:08:48

标签: visual-studio-2008 string c++-cli char

我有String^ 1我需要将其转换为const char*并且c_str()不起作用,因为它不是System :: String的成员。除了this方法之外,还有更简单的方法吗?我只做了一次这是来自openFileDialog->Filename,所以输入不会是任何复杂的。我正在使用Visual Studio 2008 感谢

2 个答案:

答案 0 :(得分:3)

我认为这page可能对您有帮助。

希望有所帮助

答案 1 :(得分:0)

将String ^转换为普通char *字符串的最简单方法是使用您链接到的一些代码。重要的是:

pin_ptr<const wchar_t> wch = PtrToStringChars( source );

完成此操作后,您可以使用wch变量来访问您的角色,但此代码有一些警告。

  • 如果您打算使用wch变量来访问字符串,那么您必须确保字符串的生命周期小于声明pin_ptr的范围的生命周期。
  • 如果您想在其他地方使用该字符串,或将其传递给更长寿的函数,那么您需要提取内容并将其保存在其他地方。这就是您链接到的示例中的大多数代码正在执行的操作。

我建议将该字符串保存在STL字符串(或wstring)类中,或者至少将内容复制到单独管理的缓冲区中 - 就像示例所做的那样。

在工作中,我们使用一些重载函数,这些函数从一种字符串类型转换到另一种字符串类型,所有函数都使用相同的名称。从.Net字符串转换为STL字符串的那个就是:

std::wstring ConvertString(String^ source)
{
    pin_ptr<const wchar_t> pinned_string_ptr(PtrToStringChars(source));
    return std::wstring(pinned_string_ptr);
}