列表和字符串转换
本文关键字:转换 字符串 列表 | 更新日期: 2023-09-27 18:00:53
我需要在C++/CLI中有一个函数,它在C#中的C++本机std::list<std::string>
和string[]
之间进行链接,才能用我的WinForm:实现类似的功能
ComboBox1.Items.AddRange(installs);
安装是string[]
。
你有主意吗?我该怎么做?没有Intellisense,C++/CLI编程很难。:(
你对此怎么看?
本机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;
}
我需要使用顶部的最后一个代码来编码这个函数:
在我的Winform中用C#调用了C++/CLI.cpp
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++中,通常使用迭代器范围而不是容器。此外,以上仅适用于(零终止(字符串。转换其他对象集合需要非常相似的代码。抽象掉对象转换可能是有意义的。