String c#:如何将c#字符串转换为c++;反之亦然

String c#:如何将c#字符串转换为c++;反之亦然,string,visual-c++,c#-4.0,wstring,widestring,String,Visual C++,C# 4.0,Wstring,Widestring,c#代码- 字符串s=”おはよう"; 我想把S发送到C++ DLL,如WSnc. 如何在C++中转换字符串到WString? A>代码> STD::WString 是C++对象,由C++运行时分配,并具有依赖于实现的内部格式。您可能能够想出如何在C程序中创建其中一个并将其传递给非托管C++代码,但这样做会有点困难和困难。危险因为. STD::WScGe>/Cuff>的内部结构是依赖于实现的,对C++编译器或运行库的任何更改都会破坏您的解决方案。 您通常要做的是编写C++中的接口层,它采用了

c#代码-

字符串s=”おはよう"; <>我想把S发送到C++ DLL,如WSnc.

如何在C++中转换字符串到WString?

A>代码> STD::WString 是C++对象,由C++运行时分配,并具有依赖于实现的内部格式。您可能能够想出如何在C程序中创建其中一个并将其传递给非托管C++代码,但这样做会有点困难和困难。危险因为.<代码> STD::WScGe>/Cuff>的内部结构是依赖于实现的,对C++编译器或运行库的任何更改都会破坏您的解决方案。

您通常要做的是编写C++中的接口层,它采用了 LPTSTR 参数,将其转换成 STD::WScRe>代码>,然后调用您想调用的C++函数。

int Foo(std::wstring p);
您将编写一个接口函数:

int FooCaller(LPTSTR p)
{
    std::wstring str = p;
    return Foo(str);
}
然后从C#程序调用
FooCaller


简而言之,C++不能创建并通过一个代码> STD::WScRe>/Cuff>,所以你使用一个翻译层。

你打算如何把这个发送到C++ DLL?通常P/Unjk会为你做转换。然后你将使用p/Unjk([dLimPurt])它应该只是工作。这不是问题,但是如何在C++中转换字符串到WCHAR,我认为没有办法将C字符串转换成C++代码> STD::WString 。可以将它封为<代码> LPTSTR 或可能是“代码> LPWSTR ”,但这些只是字符数组。我们可以提供建议。你也可以看看Nice help@JimMischel,谢谢。还有其他方法吗,或者反过来
int FooCaller(LPTSTR p)
{
    std::wstring str = p;
    return Foo(str);
}