- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 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
作为 lpAppName
或 lpKeyName
参数,为了枚举所有可用值,而您提供的缓冲区太小,返回值将比缓冲区大小小两倍。
你将不得不动态分配缓冲区。所以你可能会使用 std::auto_ptr
或 std::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/
我只是想从 .NET 调用 kernel32 中的 GetPrivateProfileString 和 GetPrivateProfileSection,但遇到了一些我不明白的奇怪问题。 让我们从这个
Windows 的 GetPrivateProfileXXX 函数(用于处理 INI 文件)在处理缓冲区长度方面有一些奇怪的规则。 GetPrivateProfileString 的文档指出: If
我正在使用 GetPrivateProfileStringA 从 .ini 文件中读取一些内容。我有一些其他类,我将东西与字符串数组一起保存。我必须像这样使用它才能将正确的字符串放入 ControlA
我正在用 C++ 创建一个 dll。这是一个 Visual Studio 项目。 dll 从 ini 文件中读取一些数据。我决定使用 GetPrivateProfileString 函数。它几乎完全有
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
我想用 GetPrivateProfileString 制作一个 INI 阅读器。我正在使用什么: public class Config { [DllImport("kernel32")]
我正在尝试使用 GetPrivateProfileString 从 ini 文件中读取我的程序的授权详细信息。我想进入 directory/Folder/File.ini) 但不知道该怎么做 我试过
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias _ "GetPrivateProfileStr
现在我想从 ini 中的变量中获取值并将它们吐出到 sendkey 函数中。所以目前这就是我在顶部定义它们的方式显然不正确,因为我在测试变量时得到了默认值。 const int KeyAtk = Ge
我正在修改现有的 C++ 应用程序并移出一些当前硬编码的值。 我正在用一个类来执行此操作,该类将“管理”整个事情并保持 map来自 INI 文件的值。 现在我必须使用 ::GetPrivateProf
我正在开发一个要在 Raspberry Pi 上运行的 UWP 应用程序。我需要读取存储在 .ini 文件中的数据 - 我知道 Microsoft 希望我使用 xml,但我必须使用 ini。 我已经成
我有一个程序,它从文件“.\abcd.ini”读取GetPrivateProfileString - 即它将在当前目录中查找ini 文件。如果找不到 ini 文件,则会在第三个参数中将默认值设置为 G
在 GetPrivateProfileString 中,lpReturnedString 返回 ini 文件特定部分的键中存在的字符串值。 我的问题是,我如何准确知道必须分配多少内存,而不是在调用此函
我需要一种方法来读取 StringBuilder 变量中 ini 文件的所有部分/键: [DllImport("kernel32.dll")] private static extern int Ge
运行我在 64 位 Vista 上编写的 c# 控制台应用程序。这是代码: class Class1 { static void Main(string[] args) {
我声明了以下代码: Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileSt
在 CPP Visual Studio 2010 中。我需要从 ini 文件中读取一些配置。下面的代码不起作用。谁能帮我修一下。 char * path = "C:\\NotBackedUp\\Wo
我是一名优秀的程序员,十分优秀!