将数字字符串的格式设置为为名称指定的区域设置自定义的数字字符串。
Syntax
int GetNumberFormatEx(
[in, optional] LPCWSTR lpLocaleName,
[in] DWORD dwFlags,
[in] LPCWSTR lpValue,
[in, optional] const NUMBERFMTW *lpFormat,
[out, optional] LPWSTR lpNumberStr,
[in] int cchNumber
);
参数
[in, optional] lpLocaleName
指向 区域设置名称或以下预定义值之一的指针。
[in] dwFlags
控制函数操作的标志。 如果未将 lpFormat设置为 NULL,则应用程序必须将此参数设置为 0。 在这种情况下,该函数使用用户替代设置字符串的格式设置为区域设置的默认数字格式。 如果 lpFormat 设置为 NULL,则应用程序可以使用指定区域设置的系统默认数字格式来指定字符串格式 LOCALE_NOUSEROVERRIDE。
[in] lpValue
指向包含要设置格式的数字字符串的以 null 结尾的字符串的指针。 此字符串只能包含以下字符。 所有其他字符都无效。 如果由 lpValue 指示的字符串 偏离这些规则,该函数将返回错误。
- 字符“0”到“9”。
- 如果数字是浮点值,则为一个小数点(点)。
- 如果数字为负值,则第一个字符位置的减号。
[in, optional] lpFormat
指向包含数字格式信息的 NUMBERFMT 结构的指针,所有成员都设置为适当的值。 如果应用程序未将此参数设置为 NULL,则该函数使用区域设置格式信息。
[out, optional] lpNumberStr
指向此函数检索格式化数字字符串的缓冲区的指针。 或者,如果 cchNumber 设置为 0,则此参数包含 NULL。 在这种情况下,该函数返回数字字符串缓冲区所需的大小。
[in] cchNumber
lpNumberStr 指示的数字字符串缓冲区的大小(以字符为单位)。 或者,应用程序可以将此参数设置为 0。 在这种情况下,该函数返回数字字符串缓冲区所需的大小,并且不使用 lpNumberStr 参数。
返回值
返回在缓冲区中检索到的字符数,如果成功,则返回 lpNumberStr 指示的字符数。 如果 cchNumber 参数设置为 0,则该函数将返回保存格式化数字字符串所需的字符数,包括终止 null 字符。
如果函数不成功,则返回 0。 若要获取扩展的错误信息,应用程序可以调用 GetLastError,这会返回以下错误代码之一:
- ERROR_INSUFFICIENT_BUFFER。 提供的缓冲区大小不够大,或者错误地设置为 NULL。
- ERROR_INVALID_FLAGS。 为标志提供的值无效。
- ERROR_INVALID_PARAMETER。 任何参数值都无效。
- ERROR_OUTOFMEMORY。 没有足够的存储可用于完成此操作。
注解
从 Windows 8 开始: 如果应用从 Windows.Globalization 命名空间将语言标记传递给此函数,则必须先通过调用 ResolveLocaleName 来转换标记。
要求
| Requirement | 价值 |
|---|---|
| 最低支持的客户端 | Windows Vista [桌面应用 |UWP 应用] |
| 支持的最低服务器 | Windows Server 2008 [桌面应用 |UWP 应用] |
| 目标平台 | Windows操作系统 |
| Header | winnls.h (包括 Windows.h) |
| Library | Kernel32.lib |
| DLL | Kernel32.dll |