2013-02-04 39 views
-2

this文章中提到了System :: String和const char *之间的转换。将System :: String ^编码为C++中的char *

我的问题是:是否有可能使用此构造(marshal_context)从System :: String转换为char *(注意缺少const)?

如果不是什么建议解决这个问题?我不得不使用旧的Marshal :: StringToHGlobalAnsi?

评论中还有其他问题。

+1

把它变成一个'std :: string',然后用'&str [0]'来获得底层的'char *'? – Rapptz

+0

@ RichardJ.RossIII'c_str()'返回'const char *'。 – Rapptz

+0

不错的主意!但也许有一些更好的解决方案,我不需要照顾内存泄漏等 – Joe

回答

1

您可以使用由Strings提供的方法c_str()来获取底层c风格的字符串。这是const,但您可以将其复制到您自己的变量char*中。

刚刚分配一个足够大的缓冲区,就像你会用malloc,然后strncpy进去。有一百种不同的方法可以做到这一点,但这一切都归结为保留内存,复制字符串,玩得开心。

+0

非常好。这样我知道什么是删除,什么不是。我写了我的问题很不清楚,但你明白了。很好的决心。谢谢 – Joe

+0

没问题的人。有趣的编码! – slezica

相关问题