gpt4 book ai didi

c++ - GetPrivateProfileString - c++类 - 返回字符串 - 内存预计算

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:37 26 4
gpt4 key购买 nike

GetPrivateProfileString 中,lpReturnedString 返回 ini 文件特定部分的键中存在的字符串值。

我的问题是,我如何准确知道必须分配多少内存,而不是在调用此函数之前分配一大块内存。

DWORD WINAPI GetPrivateProfileString(
__in LPCTSTR lpAppName,
__in LPCTSTR lpKeyName,
__in LPCTSTR lpDefault,
__out LPTSTR lpReturnedString,
__in DWORD nSize,
__in LPCTSTR lpFileName
);

最佳答案

标准案例

GetPrivateProfileString 的返回值是复制到缓冲区的字符数,不包括空终止符。

因此,您可以从(比如说)100 _TCHAR 的缓冲区开始s 并检查返回值。如果是 99,那么要么你猜对了字符串的大小,要么(更有可能)你的缓冲区太小,所以扩大它并重试。

“枚举”案例

以上适用于从 .ini 中检索一个字符串值的标准情况文件。如果您改为传递 NULL作为 lpAppNamelpKeyName参数,为了枚举所有可用值,而您提供的缓冲区太小,返回值将比缓冲区大小小两倍

分配策略

你将不得不动态分配缓冲区。所以你可能会使用 std::auto_ptrstd::unique_ptr ,或者可能是 std::vector<_TCHAR>你可以resize()如所须。如果您事先不知道字符串有多大,我建议您从 250 _TCHAR 开始。 s 并在每次发现缓冲区太小时将大小加倍。实际上,我敢打赌 99.9999% 的情况下 250 就足够了。

备选方案

存储在 %APPDATA% 下的 XML 文件;存储在 %APPDATA% 下的 JSON 文件, 注册表...

关于c++ - GetPrivateProfileString - c++类 - 返回字符串 - 内存预计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3963944/

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