65.9K
CodeProject 正在变化。 阅读更多。
Home

托管字符串*数据类型到LPCTSTR的转换

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.79/5 (8投票s)

2004年10月5日

1分钟阅读

viewsIcon

70601

downloadIcon

440

一个将 VC++.NET String* 数据类型转换为传统 LPCTSTR 的类

引言

作为一名 VC++ 程序员,如果你正在使用 VC.NET,你可能会尝试在 .NET 框架下使用你旧的传统代码。

当我尝试使用我的一些旧 C++ 代码时,我遇到了 .NET 框架中的数据类型转换问题。我以为微软会在 .NET 中更好地处理数据类型问题。

无论如何,我遇到的一个问题是,要使用一个接收 LPCTSTR 数据类型参数的函数。在 .NET 中,你可以使用托管的 String* 数据类型,但编译器会报错,因为它无法将托管 String* 数据类型转换为 LPCTSTR 数据类型。

这个问题可以通过 .NET 框架中 Marshal 类提供的 StringToHGlobalAnsi 方法来处理,但这并不容易。你必须进行一些静态类型转换。

我想可能还有其他人遇到同样的问题,所以我决定创建一个小类,该类只有两个方法,用于将托管的 String* 数据类型转换为非托管的 LPCTSTR 数据类型。无论如何,我已经将代码放在一个类中,但你可以以你自己的方式使用它。

这两个方法是

  1. LPCTSTR AnsiStrings::ConvertStringToLPCTSTR(String* sString)

    你只需要将你的 String* 变量传递给它,并接收一个 LPCTSTR 变量。
  2. void AnsiStrings::ReleaseLPCTSTR(LPCTSTR lpsString)

    这个方法将释放我们传统 LPCTSTR 变量所持有的内存。

这是一个小类,但我希望 VC.NET 的初学者能够充分利用它。

© . All rights reserved.