gpt4 book ai didi

c++ - CString 到 char*

转载 作者:太空宇宙 更新时间:2023-11-04 13:45:51 25 4
gpt4 key购买 nike

我们在大部分代码中都使用了 CString 类。但是有时我们需要转换为 char *。目前我们一直在使用 variable.GetBuffer(0) 执行此操作,这似乎有效(这主要发生在将 Csting 传递到函数需要 char * 的函数中时)。该功能接受这个,我们继续前进。

然而,我们最近开始担心它是如何工作的,以及是否有更好的方法来做到这一点。

我理解它的工作方式是它将一个 char 指针传递给指向 CString 中第一个字符的函数,并且一切正常。

我想我们只是担心内存泄漏或任何不可预见的情况,这可能不是一个好主意。

最佳答案

如果您的函数只需要读取字符串而不需要修改它,请将它们更改为接受 const char * 而不是 char *CString 会自动为您转换,这是大多数 MFC 函数的工作方式,而且非常方便。 (实际上 MFC 使用 LPCTSTR,它是 const TCHAR * 的同义词 - 适用于 MBC 和 Unicode 构建)。

如果您需要修改字符串,GetBuffer(0) 非常危险 - 它不一定会为结果字符串分配足够的内存,并且您可能会遇到一些缓冲区溢出错误。

正如其他人提到的,您需要在GetBuffer 之后使用ReleaseBuffer。对于转换为 const char *,您不需要这样做。

关于c++ - CString 到 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26021510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com