【问题标题】:managed c++ string compare working oddly托管 C++ 字符串比较奇怪地工作
【发布时间】:2012-02-24 16:55:29
【问题描述】:

我正在尝试比较 2 个字符串,但结果很奇怪。在某些计算机上,比较可以正常工作,而在其他计算机上则不能。代码是使用托管 C++ 在 Visual Studio 2010 中编写的。我检查了字符串,它们看起来相同。有什么想法吗?

String^ str1 = "string1";
char[] chars = "string1";
String^ str2 = new String(chars);
if(String::Compare(str1,str2)==0)
    return true;
else
    return false;

【问题讨论】:

  • String::Compare 是文化敏感的;如果你想使用不变的文化,那么使用不同的重载以CultureInfo
  • 我看到了,但我对文化不是很熟悉。我该怎么做?
  • StringComparison::InvariantCulture 调用this overload 无疑是最简单的方法,但是每个重载都带有示例代码——阅读文档。
  • InvariantCulture 仍然失败。其余的也一样。
  • 那么您需要显示更多实际显示问题的代码(例如,您甚至没有在显示的代码中检查String::Compare 的结果)。 SSCCE

标签: .net c++-cli visual-c++-2010 base-class-library


【解决方案1】:

原来问题在于将 char* 转换为字符串。 char* 数组未正确以 null 终止。

【讨论】:

    猜你喜欢
    • 2011-09-18
    • 1970-01-01
    • 2011-04-07
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多