Ameer Salah Ответов: 2

Как я могу получить map<sting, int> из C++ в C#


Я пытаюсь получить карту из dll c++

Код на языке C++
extern "C" __declspec(dllexport) map<string, int> createMap(string &fileName) {
	ifstream infile(fileName);
	vector<string> bitsLine;
	bool headerEnded = false;
	string line;
	int i = 0;
	int length = 0;

	while (getline(infile, line)) {
		if (headerEnded) {
			bitsLine = split(line, ',');
			signalsMap.insert({ bitsLine.at(0), length });
		}
		else {
			if (line.find("HEADER_END") != std::string::npos) {
				headerEnded = true;
			}
		}
		length = infile.tellg();
		i++;
	}
	return signalsMap;
}


Что я уже пробовал:

Код C#
Dictionary<string, int>  x =  createMap("C:/users/asalah/source/repos/WindowsFormsApp3/WindowsFormsApp3/RR_Test2_3.csv");

2 Ответов

Рейтинг:
1

CPallini

Ваш лучший выбор-это использование C++/CLI (и, возможно, непосредственно заполнить словарь, не используя std::map вообще). Смотрите, например с++ - НКЛ/командной строки преобразовать СТД::карта .объем словаря - переполнение стека [^].


Ameer Salah

Большое спасибо чувак,
Почему, когда я пытаюсь сделать его словарем<string, int>
Я получил строку недопустимых универсальных аргументов

CPallini

Я думаю, вам нужно использовать словарь<String^, int> (Я не эксперт по CLI/C++).

Рейтинг:
0

Aydin Homay

Привет,
Я думаю, что в основном вам нужно использовать STL/CLR для отображения вашего родного контейнера c++.Сеть содержит. Вы можете найти хороший пример и полезную информацию по ссылке ниже:

Как преобразовать контейнер STL/CLR в коллекцию .NET | Microsoft Docs[^]

К вашему вниманию:
адаптер (STL/CLR) | Microsoft Docs[^]

Пожалуйста, не стесняйтесь оставлять комментарий, если он не сработал, то я постараюсь улучшить свое решение.

Овации,
АХ