//浣跨敤瀹藉瓧絎﹂泦錛岄噸鍐欎簡涓浜泂tring綾婚噷闈㈡湁鎵嬈犵己鐨勬柟娉曪紝閮芥槸涓轟簡蹇界暐澶у皬鍐欒屽仛鐨勩?/font>
/*
* Utils.h
*
* Created on: 2010-1-9
* Author: dream
*/
#ifndef UTILS_H_
#define UTILS_H_
#include <iostream>
#include <fstream>
#include <string>
#include <cstddef>
/**
*甯哥敤宸ュ叿綾?br> */
class StringUtil: char_traits<wchar_t> {
public:
/**
*灝嗗瓧絎︿覆杞崲鎴愬皬鍐?br> */
static const string toLowerCase(string& s) {
string lower(s);
for (size_t i = 0; i < s.length(); ++i) {
lower[i] = tolower(lower[i]);
}
return lower;
}
/**
* 灝嗗瓧絎︿覆杞崲鎴愬ぇ鍐?br> */
static const string toUpperCase(string& s) {
string upper(s);
for (size_t i = 0; i < s.length(); ++i) {
upper[i] = toupper(upper[i]);
}
return upper;
}
/*浠ヤ笅灝嗗涓浜泂tring綾葷殑鏂規硶閲嶈澆錛屼互鎻愪緵蹇界暐澶у皬鍐欑殑鏂規硶*/
///////////////////////////////////////////////////////////////////////
static const bool eq(wchar_t c1st, wchar_t c2nd) {
return towupper(c1st) == towupper(c2nd);
}
static const bool ne(wchar_t c1st, wchar_t c2nd) {
return towupper(c1st) == towupper(c2nd);
}
static const bool lt(wchar_t c1st, wchar_t c2nd) {
return towupper(c1st) < towupper(c2nd);
}
/**
*str1 > str2 榪斿洖 1
*str1 < str2 榪斿洖 -1
*str1 = str2 榪斿洖 0
*/
static const int compare(const wchar_t* str1, const wchar_t* str2, size_t n) {
for (size_t i = 0; i < n; i++) {
if (str1 == 0) {
return -1;
} else if (str2 == 0) {
return 1;
} else if (towlower(*str1) < towlower(*str2)) {
return -1;
} else if (towlower(*str1) > towlower(*str2)) {
return 1;
}
assert(towlower(*str1) == towlower(*str2));
++str1;
++str2;
}
return 0;
}
/**
* 蹇界暐澶у皬鍐欐煡鎵炬寚瀹氬瓧絎︿覆錛岃繑鍥炵殑鏄?6榪涘埗鐨勫?br> *
* 鍥犱負gcc榛樿浣跨敤char鎴栬卻tring綾誨瀷錛屾墍浠ュ嚭鍏ョ涓涓弬鏁扮殑鏃跺欓渶瑕佽繘琛屽己鍒剁被鍨嬭漿鎹?br> *
* @Param wchar_t* s1 : 寰呮煡鎵劇殑瀛楃涓?br> * @Param size_t n: 浠庣N浣嶅紑濮嬫煡鎵?br> * @Param wchar_t c:琚煡鎵劇殑瀵硅薄
*/
static const wchar_t* find(const wchar_t* s1, size_t n, wchar_t c) {
while (n-- > 0) {
if (towupper(*s1) == towupper(c))
return s1;
else
++s1;
}
return 0;
}
};
#endif /* UTILS_H_ */

]]>