【发布时间】:2016-02-05 06:03:50
【问题描述】:
我有一个同时使用 C# 和本机 C++ (MFC) 的旧版应用程序。我需要对两边的字符串进行排序,以使它们的顺序相同。问题是在使用string.Compare 的.NET 端,它以“特定于文化”的方式出现,例如,“A_B”在“A11”之前排序,而在 MFC 中,使用operator <,“A11”排在“A_B”之前。
我知道我可以将 .NET 端更改为使用序数排序,但这可能会破坏一些外语排序。我想要的是更改 MFC 排序,使其以“特定于文化”的方式进行排序,就像 .NET 端一样。我在 Win32 API 中找到了CompareStringEx,但我想知道是否有 MFC 解决方案或我缺少的其他东西。
提前致谢。
【问题讨论】:
-
显而易见的问题:您使用什么进行 C++ 排序? std::sort(或更好的 std::stable_sort)也接受比较函数对象。您可以使用 locale-aware _wcsicmp 编写自己的
-
我正在使用 CString 运算符_mbscmp)
-
那就不要使用它,并使用区域感知比较功能!
-
@AdrianoRepetti - 这就是我正在寻找的 - 一个与 .NET 端匹配的比较函数。谢谢!