C++中string类型与char*类型的字符串比较剖析
2013-07-31 16:15
441 查看
C++中的string字符串可以直接进行比较,事实上strcmp()的两个参数是char*类型的,也就是说是比较C字符串的(即char数组),于是就不能用于比较string类型了
但是string对象通过string类的方法 c_str() 就是可以进行比较的了
string类型的直接比较 strcmp比较char*字符串或者是通过c_str()转换来的char*字符串 都是比较ASCII码
如果直接比较char*字符串的话就会发现 是在比较内存中的位置,在前者较大
以上是例程
int strcmp( const char *string1, const char *string2 ); Value Relationship of string1 to string2 < 0 string1 less than string2 0 string1 identical to string2 > 0 string1 greater than string2
但是string对象通过string类的方法 c_str() 就是可以进行比较的了
string类型的直接比较 strcmp比较char*字符串或者是通过c_str()转换来的char*字符串 都是比较ASCII码
如果直接比较char*字符串的话就会发现 是在比较内存中的位置,在前者较大
#include <iostream> #include<cstring> using namespace std; int main() { string s = "abc"; string s1 = "abd"; if(s<s1) cout<<"string 类型 s = abc s1 = abd 直接比较 s小于s1"<<endl<<endl; if(strcmp(s.c_str(),s1.c_str())<0) cout<<"string 类型 s = abc s1 = abd 用c_str()转换成char*后strcmp比较 s小于s1"<<endl<<endl; cout<<"char* 数组比较"<<endl<<endl; char s2[10] = "abc"; char s3[10] = "def"; if(strcmp(s2,s3)<0) cout<<"strcmp比较 s2小于s3"<<endl<<endl; if(s2>s3) cout<<"直接比较s2大于s3,明显是按照地址先后进行比较的"; return 0; }
以上是例程
相关文章推荐
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- char*数组(c类型字符串)和c++中的string的转换、字符串比较、char*数组等问题
- C++ 中string类型和 C风格 char类型字符串比较
- C风格字符串和C++的标准库类型string的比较
- c++将string类型字符串转换成char *
- C/C++关于字符串string、char*字符串数组与其他类型转换
- char[]数组名与指针,以及字符串数组与string的一些比较
- C++ unordered_map 在key为string类型和char*类型时测试时间性能差异
- 【C++】CString/string/char *比较详解
- c++中的一些类型转换 : CString,string,int ,long,double,char*,const char*,date等 .
- char类型的字符串比较,和vector的初次见面
- c++的字符串char与string相互转化,以及string的,切割,替换字符,字符串相关的函数整理
- String类型 在底层剖析,并比较 与StringBuilding 的区别
- C++ 中TCHAR字符串数组转化为Char类型数组
- C++中char*,string,int类型的相互转换
- 【转载】cocos2d-x类型转换(CCstring int string char UTF-8互转)以及字符串详解
- 第十周 字符串除了用C++扩充的string类型外,按C语言的传统,还可以用char *表示
- c++ CString string char* char int类型的相互转换
- MFC/C++/C中字符类型CString, int, string, char*之间的转换
- c++中string类型字符串的使用