Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在将其转换为std::string时,如何使用system string类型列表中的所有元素填充向量?_String_Lambda_C++ Cli - Fatal编程技术网

在将其转换为std::string时,如何使用system string类型列表中的所有元素填充向量?

在将其转换为std::string时,如何使用system string类型列表中的所有元素填充向量?,string,lambda,c++-cli,String,Lambda,C++ Cli,我正试图更好地理解lambda函数,并希望通过这样一个lambda示例(如果我能够)了解如何在将System.String^转换为std::String时添加到向量 我目前的职位: List<String^>^ names = //Returning 'System.String' List from C# for each (System::String^ name in names) { std::string convertedString = m

我正试图更好地理解lambda函数,并希望通过这样一个lambda示例(如果我能够)了解如何在将System.String^转换为std::String时添加到向量

我目前的职位:

List<String^>^ names = //Returning 'System.String' List from C#

    for each (System::String^ name in names)
    {
      std::string convertedString = msclr::interop::marshal_as< std::string >(name);
      nameObjects.push_back(MyObject(convertedString, "test"));
    }
List^names=//从C返回'System.String'列表#
对于每个(名称中的系统::字符串^name)
{
std::string convertedString=msclr::interop::marshal_as(名称);
nameObjects.push_back(MyObject(转换字符串,“test”);
}
但我想将其扩展到类似这样的内容(我的最佳猜测是,但我缺少将“name”的每个元素转换为单个字符串的逻辑,这就是Lambda可以帮助我的地方):

std::vector testObjects{std::begin(msclr::interop::marshal_as(名称)),std::end(msclr::interop::marshal_as(名称));

好吧,我找到了一种方法来实现这一点……它需要使用晦涩难懂的类

首先,创建一个
cliext::vector
,有一个带有
IEnumerator
的重载

cliext::vector<String^> v_names(names);

@Dan我只是想更好地理解Lambdas,我认为这将是一个很好的例子,因为它包括转换和使用列表类型的元素推送到列表。我不知道你说的合作良好到底是什么意思,你是说我不能转换成std::string,而用Lambda开始和结束向量吗?@Ðаn伟大的观察丹。我知道我没有表现出任何使用Lambda的企图(很明显我是在问如何学习),你会说我不被允许问如何学习吗-你认为你能帮我举一个例子,让我更好地理解它,并回答关于它的问题吗-你是在告诉我不使用Lambdas可以更好地理解Lambdas/丹,如果你花一点时间来阅读我的问题或我的第一个问题的后续工作,你会知道我坚持C++,但是我想用这个CLI例子来理解,因为它包含了一个问题中的所有内容,以帮助我完全理解它。你介意帮我解决这个问题吗?因为你告诉我该怎么问一个问题对我没有帮助,而且浪费了我们的时间-谢谢你的帮助。我不是在问“我怎样才能学兰巴斯”。谢谢你的帮助。对其他人来说,这个问题仍然存在。好的,谢谢。我理解这一点,我将在C++中对.NET列表进行更多的研究。我问这个问题有两个原因。在您给我的示例链接中,我发现:
std::for_each(mySystemString.begin(),mySystemString.end(),[](System::String){/*是否可以将系统字符串转换为std*/})这是否有可能,即使这不是一个直接的答案,它仍然可以帮助我理解CLI的可能性?我感谢你解释为什么我应该坚持C++。
cliext::vector<String^> v_names(names);
std::vector<MyObject> testObjects;
cliext::transform(v_names.begin(), v_names.end(), std::back_inserter(testObjects), [](String^ name)
{
    std::string convertedString = msclr::interop::marshal_as< std::string >(name);
    return MyObject(convertedString, "test");
});