String字符串的比较和转换

String类里有提供了字符串的比较函数,但是它是精准比较,如果我们想做模糊比较就不好做了。msdn描述如下:

basic_string::compare

Performs a case sensitive comparison with a specified string to determine if the two strings are equal or if one is lexicographically less than the other.

平时我们很多情况都要用模糊比较,我们可以写一个函数来实现,实现如下。

bool CompareStringI(const stringstr1const stringstr2)

{

 if (str1.size() != str2.size()) {

  return false;

 }

 for (string::const_iterator c1 = str1.begin(), c2 = str2.begin(); c1 != str1.end(); ++c1, ++c2) {

  if (tolower(*c1) != tolower(*c2)) {

   return false;

  }

 }

 return true;

};

使用代码

 string s1="LOVE";

 int nResult=CompareStringI(s1,"love");

 cout<<"Result: "<<nResult<<endl;

 

大小写转换在这里就简单了

string lower = "aaaabbbbbCC";

transform(lower.begin(), lower.end(), lower.begin(), toupper);

 cout<<lower<<endl;

运行结果:

 

 

字符串转整形

 string str("1000");

 stringstream ss(str);

 double num;

 ss>>num;

 cout<<num<<endl;

 string  str1 = "125";

 wstring  str2 = L"a";

 int num_i = boost::lexical_cast<int>(str1);

//不可以转字符

// int num_i = boost::lexical_cast<int>(str2);//error

 cout<<num_i<<endl;

运行结果:

 

16进制字符转整形,这个很实用,工作中比较要转换。

const char* begin = "1b";

 char *end;

 int l = strtol(begin, &end, 16);

 cout<<l<<endl;

运行结果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值