大佬教程收集整理的这篇文章主要介绍了c – 对带有数字的std :: strings进行排序?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
谢谢
基本上,类似于以下(未经测试的)比较功能:
bool is_not_digit(char C) { return !std::isdigit(c); } bool numeric_String_compare(const std::string& s1,const std::string& s2) { // handle empty Strings... std::string::const_iterator it1 = s1.begin(),it2 = s2.begin(); if (std::isdigit(s1[0]) && std::isdigit(s2[0])) { int n1,n2; std::stringstream ss(s1); ss >> n1; ss.clear(); ss.str(s2); ss >> n2; if (n1 != n2) return n1 < n2; it1 = std::find_if(s1.begin(),s1.end(),is_not_digit); it2 = std::find_if(s2.begin(),s2.end(),is_not_digit); } return std::lexicographical_compare(it1,it2,s2.end()); }
然后…
std::sort(String_array.begin(),String_array.end(),numeric_String_comparE);
编辑:当然,这个算法只有在排序数字部分出现在字符串开头的字符串时才有用.如果你正在处理数字部分可以出现在字符串中任何位置的字符串,那么你需要一个更复杂的算法.有关更多信息,请参见http://www.davekoelle.com/alphanum.html.
以上是大佬教程为你收集整理的c – 对带有数字的std :: strings进行排序?全部内容,希望文章能够帮你解决c – 对带有数字的std :: strings进行排序?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。