GetNumberFormatEx 函数 (winnls.h)

将数字字符串的格式设置为为名称指定的区域设置自定义的数字字符串。

注意 如果设计为仅在 Windows Vista 及更高版本上运行,则应用程序应优先调用 GetNumberFormat 此函数。

 
注意 此函数可以设置不同版本之间更改的数据的格式,例如,由于自定义区域设置。 如果应用程序必须保留或传输数据,请参阅 使用永久性区域设置数据
 

语法

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 ,以使用指定区域设置的系统默认数字格式设置字符串的格式。

谨慎 强烈建议不要使用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 来转换标记。

要求

要求
最低受支持的客户端 Windows Vista [桌面应用 | UWP 应用]
最低受支持的服务器 Windows Server 2008 [桌面应用 | UWP 应用]
目标平台 Windows
标头 winnls.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

GetNumberFormat

NUMBERFMT

国家语言支持

国家语言支持函数