我需要寫類似C#字符串非託管C++ DLL
switch (nameOfType)
{
case "burk":
return "zzzz";
在我的C++ DLL
(我需要這個比較類型名稱)
哪裏nameOfType是從C#來了一個字符串(通過DLLImport) 但我在c + +中很新 - 我必須使用什麼類型在C++中使用字符串以與在c#中相同的方式運行?
我需要寫類似C#字符串非託管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++語言中使用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;
等等等等