string compare用法

来源:互联网 发布:免费网络名片在线制作 编辑:程序博客网 时间:2024/06/04 17:58
string (1)
int compare (const string& str) const;
substrings (2)
int compare (size_t pos, size_t len, const string& str) const;int compare (size_t pos, size_t len, const string& str,             size_t subpos, size_t sublen) const;
c-string (3)
int compare (const char* s) const;int compare (size_t pos, size_t len, const char* s) const;
buffer (4)
int compare (size_t pos, size_t len, const char* s, size_t n) const;
Compare strings
Compares the value of the string object (or a substring) to the sequence of characters specified by its arguments.

The compared string is the value of the string object or -if the signature used has a pos and a len parameters- the substring that begins at its character in position pos and spans len characters.

This string is compared to a comparing string, which is determined by the other arguments passed to the function.

Parameters

str
Another string object, used entirely (or partially) as the comparing string.
pos
Position of the first character in the compared string.
If this is greater than the string length, it throws out_of_range.
Note: The first character is denoted by a value of 0 (not 1).
len
Length of compared string (if the string is shorter, as many characters as possible).
A value of string::npos indicates all characters until the end of the string.
subpos, sublen
Same as pos and len above, but for the comparing string.
s
Pointer to an array of characters.
If argument n is specified (4), the first n characters in the array are used as the comparing string.
Otherwise (3), a null-terminated sequence is expected: the length of the sequence with the characters to use ascomparing string is determined by the first occurrence of a null character.
n
Number of characters to compare.
size_t is an unsigned integral type (the same as member type string::size_type).

Return Value

Returns a signed integral indicating the relation between the strings:
valuerelation between compared string and comparing string0They compare equal<0Either the value of the first character that does not match is lower in the compared string, or all compared characters match but the compared string is shorter.>0Either the value of the first character that does not match is greater in the compared string, or all compared characters match but the compared string is longer.

Example

1234567891011121314151617181920212223
// comparing apples with apples#include <iostream>#include <string>int main (){  std::string str1 ("green apple");  std::string str2 ("red apple");  if (str1.compare(str2) != 0)    std::cout << str1 << " is not " << str2 << '\n';  if (str1.compare(6,5,"apple") == 0)    std::cout << "still, " << str1 << " is an apple\n";  if (str2.compare(str2.size()-5,5,"apple") == 0)    std::cout << "and " << str2 << " is also an apple\n";  if (str1.compare(6,5,str2,4,5) == 0)    std::cout << "therefore, both are apples\n";  return 0;}
Edit & Run

Output:
green apple is not red applestill, green apple is an appleand red apple is also an appletherefore, both are apples
例子:
#include <iostream>
#include <string>
using namespace std;int main(void){string str1="hi,test,hello";string str2="hi,test";//字符串比较if(str1.compare(str2)>0)printf("str1>str2\n");else if(str1.compare(str2)<0)printf("str1<str2\n");elseprintf("str1==str2\n");//str1的子串(从索引3开始,包含4个字符)与str2进行比较if(str1.compare(3,4,str2)==0)printf("str1的指定子串等于str2\n");elseprintf("str1的指定子串不等于str2\n");//str1指定子串与str2的指定子串进行比较if(str1.compare(3,4,str2,3,4)==0)printf("str1的指定子串等于str2的指定子串\n");elseprintf("str1的指定子串不等于str2的指定子串\n");//str1指定子串与字符串的前n个字符进行比较if(str1.compare(0,2,"hi,hello",2)==0)printf("str1的指定子串等于指定字符串的前2个字符组成的子串\n");elseprintf("str1的指定子串不等于指定字符串的前2个字符组成的子串\n");return 0;}
1 0
原创粉丝点击