gpt4 book ai didi

c# - 列表和字符串转换

转载 作者:行者123 更新时间:2023-11-30 15:43:48 24 4
gpt4 key购买 nike

我需要在 C++/CLI 中有一个函数,它在 C++ native 之间建立链接 std::list<std::string>和一个 string[]在 C# 中用我的 WinForm 做类似的事情:

    ComboBox1.Items.AddRange(installs);

安装string[] .

你有想法吗?我怎样才能做到这一点?如果没有 Intellisense,C++/CLI 编程会很困难。 :(

你怎么看这件事?

native C++.cpp

std::list<std::string>* Get_Liste_place_de_marche(void)
{
list<string>* liste_place_de_marche = new list<string>;
liste_place_de_marche->push_back("CAC 40");
liste_place_de_marche->push_back("DAX");
return liste_place_de_marche;
}

我需要使用顶部的最后一个代码来编写这个函数:

C++/CLI .cpp 在我的 Winform 中用 C# 调用

array<System::String^>^ NativeMethod::Get_Liste_place_de_marche(void)
{
typedef std::list<std::string>::const_iterator iter_t;

std::list<std::string> const* list = new std::list<std::string>;
list = ::Get_Liste_place_de_marche();

array<System::String^>^ ret = gcnew array<System::String^>(list->size());
int j = 0;

for (iter_t i = list->begin(); i != list->end(); ++i)
ret[j++] = gcnew System::String(i->c_str());

return ret;
}

它应该有效吗?因为我有很多错误...

最佳答案

下面应该做的工作:

array<System::String^>^ ArrayFromList(std::list<std::string> const& list) {
typedef std::list<std::string>::const_iterator iter_t;

array<System::String^>^ ret = gcnew array<System::String^>(list.size());
int j = 0;

for (iter_t i = list.begin(); i != list.end(); ++i)
ret[j++] = gcnew System::String(i->c_str());

return ret;
}

不过,我会尽量使它更笼统。例如,在 C++ 中通常使用迭代器范围而不是容器。此外,以上仅适用于(零终止)字符串。转换其他对象集合将需要非常相似的代码。将对象转换抽象掉可能是有意义的。

关于c# - 列表和字符串转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6521943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com