【问题标题】:comparing System::String^ to std::string将 System::String^ 与 std::string 进行比较
【发布时间】:2012-09-14 01:25:30
【问题描述】:

我有一个Generic::List(String^)^ myList 和一些std::string & myValue 值,我需要检查这些值是否都包含在列表中。 (我不想在列表中添加值)。

我应该做什么来代替 myList->Contains(myValue) 以确保我正在比较字符串的内容?

我知道我可以使用 InteropServices 来编组列表中的每个元素。

如果有帮助,我可以将 Generic::List 转换为 cli::array!

谢谢 梅兰妮

【问题讨论】:

  • 比较不同编码的字符串是一件很有趣的事。有时不同的字符应该比较相等。你知道你的列表是否会包含非 ASCII 字符吗?

标签: string c++-cli string-comparison stdstring


【解决方案1】:

来自List<T>::Contains(T) 文档(C# 文档,但这不会影响任何内容):

此方法通过使用默认相等比较器来确定相等性,该比较器由对象对 T(列表中值的类型)的 IEquatable.Equals 方法的实现定义。

因为String::Equals(String^) 比较字符串的内容,所以只需将std::string 转换为System::String^。你可以用marshal_as 来做到这一点,你应该很好。

【讨论】:

    猜你喜欢
    • 2015-12-29
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-16
    相关资源
    最近更新 更多