Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.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
C# MFC与C中的字符串排序# 我有一个既使用C语言又使用本地C++的传统应用程序。我需要对两边的字符串进行排序,以便它们的顺序相同。问题是,在.NET端,使用string.Compare会以“特定于区域性”的方式显示,例如,“a_B”排序在“A11”之前,而在MFC中,使用operator_C#_C++_.net_Sorting_Mfc - Fatal编程技术网

C# MFC与C中的字符串排序# 我有一个既使用C语言又使用本地C++的传统应用程序。我需要对两边的字符串进行排序,以便它们的顺序相同。问题是,在.NET端,使用string.Compare会以“特定于区域性”的方式显示,例如,“a_B”排序在“A11”之前,而在MFC中,使用operator

C# MFC与C中的字符串排序# 我有一个既使用C语言又使用本地C++的传统应用程序。我需要对两边的字符串进行排序,以便它们的顺序相同。问题是,在.NET端,使用string.Compare会以“特定于区域性”的方式显示,例如,“a_B”排序在“A11”之前,而在MFC中,使用operator,c#,c++,.net,sorting,mfc,C#,C++,.net,Sorting,Mfc,MFC的CString类和CollateNoCase进行特定于区域设置的比较。我还没有测试它们以确保它们匹配.NET排序规则,但是我希望两者都使用相同的Win32函数,在这种情况下它们显然是匹配的。明显的问题:C++排序使用什么?std::sort(或者更好的std::stable_sort)也接受比较函数对象。您可以使用区域设置感知的_wcsicmpiam using CString operator > EdthCudier-Gealman的排序顺序相同:在猜测中,您可能还没有告诉C++您想

MFC的CString类和
CollateNoCase
进行特定于区域设置的比较。我还没有测试它们以确保它们匹配.NET排序规则,但是我希望两者都使用相同的Win32函数,在这种情况下它们显然是匹配的。

明显的问题:C++排序使用什么?std::sort(或者更好的std::stable_sort)也接受比较函数对象。您可以使用区域设置感知的_wcsicmpiam using CString operator<(它使用
_mbscmp
)编写自己的代码,然后不要使用它,而是使用区域设置感知的比较函数@AdrianoRepetti-这就是我要寻找的-一个与.NET端匹配的比较函数。谢谢谢谢输入,但是排序与“代码> > EdthCudier-Gealman的排序顺序相同:在猜测中,您可能还没有告诉C++您想使用的区域。默认情况下,它将使用“C”语言环境,该语言环境基本上没有本地化。我的即时反应是尝试类似于
setlocale(LC\u COLLATE,“”)的东西在程序启动后立即启动(或者指定一个区域名称,而不是像空字符串指定的那样使用用户的默认区域设置)。回答得好-我实际上能够使用类似的东西,通过使用
\u stricoll\u l
和使用
\u create\u locale>创建的区域设置来减少对整个程序的干扰(LC_COLLATE,“”;
使用您建议的参数。谢谢!
COLLATE
strcoll
CompareStringEx
不同。例如,您需要
CompareStringEx
在资源管理器中复制排序顺序。此外
CompareStringEx
在ANSI中不可用。