2012-01-21 151 views
0

我需要寫類似C#字符串非託管C++ DLL

switch (nameOfType) 
{ 
    case "burk": 
    return "zzzz"; 
在我的C++ DLL

(我需要這個比較類型名稱)

哪裏nameOfType是從C#來了一個字符串(通過DLLImport) 但我在c + +中很新 - 我必須使用什麼類型在C++中使用字符串以與在c#中相同的方式運行?

回答

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

不能在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; 

等等等等

相關問題