繁体   English   中英

C#字符串到非托管C ++ DLL

[英]c# string to unmanaged c++ dll

我需要写一些像

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;

现在您可以使用如下的switch语句

StringEnum e = m[nameOfType];
switch(e)
{
  case bruk;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM