这两个函数来看待通常是std.string.toStringz和std.utf.toUTFz.
toStringz将转换string为immutable(char)*,您可以传递给C函数const char*.如果它可以确定string是以null为终止的(通常只有字符串文字的情况,其中有一个空终结符,它通过了它们的结尾),那么它将不会分配并且只会使用string的ptr属性,但在大多数情况下情况下,它会分配.
toUTFz将从任何字符串类型转换为任何字符指针类型.它可能最常用于转换const(wchar)*为Windows,因为Windows的所有W功能都采用UTF-16,但它也可用于转换为char*- 例如str.toUTFz!(char*)().比如toStringz,它会尝试不分配,如果它可以确定它是不必要的,但它几乎总是必要的.
现在,根据您的具体情况,您尝试使用AWindows中的某个功能.这几乎总是一个坏主意,我强烈建议反对它.使用toUTFz转换你string到const(wchar)*并传递至CreateWindowW.AFAIK,这些A功能的唯一优势是它们可以在Win2K之前使用.关于他们的其他一切都更糟糕.但是,如果由于某种原因,你坚持使用这些A函数,那么你将不得不使用std.windows.charset.toMBSz,因为这些A函数不使用UTF-8而是采用"Windows 8位字符集",toMBSz并将转换为字符串到那种格式.
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |