【发布时间】:2012-01-27 20:07:19
【问题描述】:
我正在寻找与sscanf/swscanf C++ 函数等效的 RTL delphi 函数。在 RTL delphi 函数中是否存在类似的东西,或者我必须寻找第三方实现?
【问题讨论】:
-
已经有一个类似的问题,我很高兴用一点代码来回答:stackoverflow.com/a/72713/12170
我正在寻找与sscanf/swscanf C++ 函数等效的 RTL delphi 函数。在 RTL delphi 函数中是否存在类似的东西,或者我必须寻找第三方实现?
【问题讨论】:
我个人会简单地调用可以从 msvcrt.dll 导入的真实函数。
function sscanf(buffer, format: PAnsiChar): Integer;
cdecl; varargs; external 'msvcrt.dll';
function swscanf(buffer, format: PWideChar): Integer;
cdecl; varargs; external 'msvcrt.dll';
这些是 C 标准库函数的久经考验的稳健实现。
【讨论】:
你可以downloadDelphi的扫描函数,这是移植的MSVC RTL函数。
【讨论】:
http://cc.embarcadero.com/item/24258 有一个 sscanf 端口,但它看起来早于 Unicode,因此可能需要对 XE 进行一些调整。
【讨论】:
即使在 C 语言中,这些也是不推荐使用的函数。使用更现代和类型安全的东西来解析数据。这将成为您的应用程序中大量错误的来源。例如,您打算如何使(wchar_t *) C 风格的 scanf 字符串函数与 Delphi 字符串互操作?
【讨论】:
_s 和 _s_l 版本未被弃用。