【问题标题】:Convert comma separated string of ints into a List C++/cli将逗号分隔的整数字符串转换为列表 C++/cli
【发布时间】:2018-01-31 04:10:54
【问题描述】:

我的起点是一个用逗号分隔的字符串,包含可变数量的整数,例如:

System::String^ tags=gcnew String("1,3,5,9");

现在我想 - 尽可能少的步骤 - 将此字符串转换为整数列表:

List<System::Int32>^  taglist= gcnew List<System::Int32>();//to contain 1,3,5,9

此外,在处理完列表后,我需要在一天结束时将其导出回字符串。我看到有人问 C# here 的问题 但不适用于 C++,它会略有不同。

我尝试使用字符串直接初始化,但失败了。我也试过 .Split 但这会产生字符串。我也不想做任何复杂的流式阅读器的东西。 链接中的答案必须具有 C++/cli 的等价物。

【问题讨论】:

  • Split 如你所说创建一个字符串数组,之后你想要Array::ConvertAll

标签: string list c++-cli


【解决方案1】:

正如它在 cmets 中提到的,您可以使用 Split 将字符串转换为字符串数组,然后您可以使用 Array::ConvertAll 转换为 int 值数组,在处理完这些值后,您可以使用 @987654323 @ 将整数数组转换为单个字符串。

这是一个代码示例:

String^ tags = gcnew String("1,3,5,9");
String^ separator = ",";
array<String^>^ tagsArray = tags->Split(separator->ToCharArray());

array<int>^ tagsIntArray = Array::ConvertAll<String^, int>(tagsArray,
    gcnew Converter<String^, int>(Int32::Parse));

// Do your stuff

String^ resultString = String::Join<int>(separator, tagsIntArray);

【讨论】:

  • 这可以解决问题,但我更喜欢使用列表而不是数组。有了答案,我可以轻松地往返于列表: List<:int32>^ taglist= gcnew List<:int32>(tagsIntArray);和 String^ resultStringfromlist = String::Join(separator, taglist);奖励问题:我可以在没有数组的中间步骤的情况下进入列表并返回吗?
  • 是和否:)。我相信您需要自己创建一个List&lt;int&gt; 对象(就像您描述的那样),但至少您可以将此列表传递给String::Join&lt;int&gt; 方法,而无需转换回array&lt;int&gt;^
猜你喜欢
  • 1970-01-01
  • 2013-02-04
  • 1970-01-01
  • 1970-01-01
  • 2012-01-17
  • 2011-06-12
  • 1970-01-01
相关资源
最近更新 更多