c#字符串到非托管的c++dll
本文关键字:c++dll 字符串 | 更新日期: 2023-09-27 18:20:55
我需要写一些类似的东西
switch (nameOfType)
{
case "burk":
return "zzzz";
在我的c++DLL中(我需要它来比较类型名称)
其中nameOfType是来自c#的字符串(通过DLLImport)但我对c++很陌生——我必须用什么类型的字符串在c++中操作,就像在c#中一样?
C/C++中最简单的字符串是以NULL结尾的字符数组。通常可以将C#中的托管字符串封送为const char*
类型。
您发布的代码在C++中不起作用。C++中的switch语句只允许整数类型作为操作数。获得所需内容的最简单方法是重复if
:
if (strcmp(nameOfType, "burk") == 0)
return "zzzz";
else if (strcmp(nameOfType, "xyz") == 0)
return "yyyy";
else ...
如果您需要更多的字符串功能,您应该考虑使用std::string
类。它支持正常的搜索、比较、插入和子字符串操作。
不能像C#那样在C++中的switch语句中使用char*
。你可以做的一件事是用枚举替换它
enum StringEnum { burk , foo , bar };
map<string,StringNum> m;
m["burk"] = burk;
m["foo"] = foo;
m["bar"] = bar;
现在你可以使用下面这样的切换语句
StringEnum e = m[nameOfType];
switch(e)
{
case bruk;
等等