把wstring投到wchar*的正确方法是什么?(或字符串到字符*)
【腾讯云】亏本大甩卖,服务器4核16G 1年370元(带宽12M,系统盘120GB SSD盘,月流量2000GB)!!!!!!
云产品 配置 价格
服务器 1核2G,带宽5M,系统盘50GB SSD盘,月流量500GB 38元/年
MySQL 1核1G 19元/年
服务器 16核32G,带宽18M,系统盘250GB SSD盘,月流量5000GB 1197元/年
点我进入腾讯云,查看更多详情

[I'm new to D (currently writing my first useful program) and I don't have much C background - just some C# and other mostly pointerless languages.]

Do I need to always append '\0' to the wstring before casting? Is that the only way to ensure that my wchar* will be null-terminated? When it is cast, is it a new copy of the wstring, or does it just get a pointer to the same wstring you're casting?

#0

The toStringz functions convert D strings to C-style zero-terminated strings.

immutable(char)* toStringz(const(char)[] s); 
immutable(char)* toStringz(string s);

e.g.

string s;
immutable(char)* cstr = s.toStringz();
//or: toStringz(s);

toStringz allocates a new string on the heap only if the string isn't already null terminated, otherwise it just returns s.ptr.

#1

For calling Windows *W functions use http://www.digitalmars.com/d/2.0/phobos/std_utf.html#toUTF16z

Also note that string literals already are 0-terminated so you can pass them directly.

#2

If you merely want a pointer, the correct way is to use the 'ptr' property (available for all dynamic arrays, not just strings)

str.ptr

However, if you are wanting something to use with C, to ensure it is nul-terminated, use toStringz

import std.string;
toStringz(str);

toStringz will not perform a copy if the string is already nul terminated.

推荐文章

我应该作为多用户安装RVM吗?

我应该作为多用户安装RVM吗?

推荐文章

电子邮件中指向电子邮件附件的HTML代码链接

电子邮件中指向电子邮件附件的HTML代码链接

推荐文章

锦标赛括号的递归算法

锦标赛括号的递归算法

推荐文章

如何访问Drupal 7$数据库变量?

如何访问Drupal 7$数据库变量?

推荐文章

邮件合并IF字段和VBA的问题

邮件合并IF字段和VBA的问题

推荐文章

将带符号的十进制数转换为十六进制数,并用2的补码进行编码

将带符号的十进制数转换为十六进制数,并用2的补码进行编码

推荐文章

Android:每当用户打电话时打开一个选择弹出窗口

Android:每当用户打电话时打开一个选择弹出窗口

推荐文章

将url中的图像插入数据库

将url中的图像插入数据库

推荐文章

如何优化Scala中的理解和循环?

如何优化Scala中的理解和循环?

推荐文章

使用feedzirra分析文件或流输入

使用feedzirra分析文件或流输入

推荐文章

android-SimpleAdapter+SectionIndexer

android-SimpleAdapter+SectionIndexer

推荐文章

单击事件jquery的问题

单击事件jquery的问题

推荐文章

如何通过AJAX在数据库中存储递增的投票?

如何通过AJAX在数据库中存储递增的投票?

推荐文章

在表中创建用户名、正文、消息日期字段的id字段md5的最佳方法是什么?

在表中创建用户名、正文、消息日期字段的id字段md5的最佳方法是什么?

推荐文章

让布局权重在android活动期间完美对齐imagebutton的最佳实践?

让布局权重在android活动期间完美对齐imagebutton的最佳实践?

推荐文章

如何在枚举中使用MVC Html Helper.DropDownListFor

如何在枚举中使用MVC Html Helper.DropDownListFor