我需要写一些像
这样的东西switch (nameOfType)
{
case "burk":
return "zzzz";
在我的c ++ DLL中(我需要这个来比较类型名称)
其中nameOfType是来自c#的字符串(通过DLLImport) 但是我在c ++中很新 - 我必须使用什么类型来在c ++中使用字符串,就像在c#中一样?
答案 0 :(得分:2)
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
类。它支持常规搜索,比较,插入和子串操作。
答案 1 :(得分:1)
您不能在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;
等等