std::string::compare() у C++
порівняти() є відкритою функцією-членом класу рядків. Він порівнює значення рядкового об’єкта (або підрядка) з послідовністю символів, визначених його аргументами.
Compare() може обробляти більше одного аргументу для кожного рядка, щоб можна було вказати підрядок за його індексом і довжиною.
Тип повернення: compare() повертає ціле значення, а не логічне значення.
Різні синтаксиси для string::compare() :
- Синтаксис 1: порівнює рядок *this з рядком str.
int string::compare (const string& str) const Returns: 0 : if both strings are equal. A value <0 : if *this is shorter than str or, first character that doesn't match is smaller than str. A value>0 : якщо *це довший за str або, перший символ, який не збігається, є більшим
CPP
// CPP code for demonstrating> // string::compare (const string& str) const> #include> using> namespace> std;> void> compareOperation(string s1, string s2)> {> > // returns a value <0 (s1 is smaller than s2)> > if> ((s1.compare(s2)) <0)> > cout < < s1 < < ' is smaller than ' < < s2 < < endl;> > // returns 0(s1, is being compared to itself)> > if> ((s1.compare(s1)) == 0)> > cout < < s1 < < ' is equal to ' < < s1 < < endl;> > else> > cout < < 'Strings didn't match ';> > }> // Driver Code> int> main()> {> > string s1('Geeks');> > string s2('forGeeks');> > compareOperation(s1, s2);> > > return> 0;> }> |
Вихід:
Geeks is smaller than forGeeks Geeks is equal to Geeks
- Синтаксис 2: порівнює щонайбільше len символів рядка *this, починаючи з індексу idx, із рядком str.
int string::compare (size_type idx, size_type len, const string& str) const Throws out_of_range if index>розмір().
CPP
// CPP code to demonstrate> // int string::compare (size_type idx, size_type len,> // const string& str) const> #include> using> namespace> std;> void> compareOperation(string s1, string s2)> {> > // Compares 5 characters from index number 3 of s2 with s1> > if> ((s2.compare(3, 5, s1)) == 0)> > cout < < 'Here, ' < < s1 < < ' are ' < < s2;> > else> > cout < < 'Strings didn't match ';> }> // Driver Code> int> main()> {> > string s1('Geeks');> > string s2('forGeeks');> > compareOperation(s1, s2);> > > return> 0;> }> |
Вихід:
Here, Geeks are forGeeks
- Синтаксис 3: порівнює щонайбільше len символів рядка *this, починаючи з індексу idx, щонайбільше str_len символів рядка str, що починається з індексу str_idx.
int string::compare (size_type idx, size_type len, const string& str, size_type str_idx, size_type str_len) const Throws out_of_range if idx>розмір(). Видає out_of_range, якщо str_idx> str.size().
CPP
// CPP code to demonstrate> // int string::compare (size_type idx, size_type len, const string&> // str, size_type str_idx, size_type str_len) const> #include> using> namespace> std;> void> compareOperation(string s1, string s2)> {> > // Compares 5 characters from index number 0 of s1 with> > // 5 characters from index 3 of s2> > if> ((s1.compare(0, 5, s2, 3, 5)) == 0)> > cout < < 'Welcome to ' < < s1 < < s2 < < ' World';> > else> > cout < < 'Strings didn't match ';> }> // Driver Code> int> main()> {> > string s1('Geeks');> > string s2('forGeeks');> > compareOperation(s1, s2);> > > return> 0;> }> |
Вихід:
Welcome, to techcodeview.com World
- Синтаксис 4: порівнює символи рядка *this із символами C-рядка cstr.
int string::compare (const char* cstr) const
CPP
// CPP code to demonstrate> // int string::compare (const char* cstr) const> #include> using> namespace> std;> void> compareOperation(string s1, string s2)> {> > // returns <0 (s1 < 'techcodeview.com')> > if> ((s1.compare('techcodeview.com')) <0)> > cout < < s1 < < ' is smaller than string ' < < 'techcodeview.com';> > //returns 0 (s2 is 'forgeeks')> > if> ((s2.compare('forGeeks')) == 0)> > cout < < endl < < s2 < < ' is equal to string ' < < s2;> > else> > cout < < 'Strings didn't match ';> > }> // Driver Code> int> main()> {> > string s1('Geeks');> > string s2('forGeeks');> > compareOperation(s1, s2);> > > return> 0;> }> |
Вихід:
Geeks is smaller than string techcodeview.com forGeeks is equal to string forGeeks
- Синтаксис 5: порівнює щонайбільше len символів рядка *this, починаючи з індексу idx, з усіма символами C-рядка cstr.
int string::compare (size_type idx, size_type len, const char* cstr) const
Зверніть увагу, що cstr може не бути нульовим покажчиком (NULL).
CPP
// CPP code to demonstrate> // int string::compare (size_type idx, size_type len,> // const char* cstr) const> #include> using> namespace> std;> void> compareOperation(string s1)> {> > // Compares 5 characters from 0 index of s1 with 'Geeks'> > if> ((s1.compare(0, 5, 'Geeks')) == 0)> > cout < < s1 < < ' are ' < < 'awesome people';> > > else> > cout < < 'Strings didn't match ';> > }> // Driver Code> int> main()> {> > string s1('Geeks');> > compareOperation(s1);> > > return> 0;> }> |
Вихід:
Geeks are awesome people
- Синтаксис 6: порівнює щонайбільше len символів рядка *this, починаючи з індексу idx із символами chars_len масиву символів chars.
int string::compare (size_type idx, size_type len, const char* chars, size_type chars_len)const
Зауважте, що chars має мати принаймні chars_len символів. Символи можуть мати довільні значення. Таким чином, « » не має особливого значення.
CPP
// CPP code to demonstrate> // int string::compare (size_type idx, size_type len,> // const char* chars, size_type chars_len)const> #include> using> namespace> std;> void> compareOperation(string s1, string s2)> {> > // Compares 5 characters from 0 index of s1 with> > // 5 characters of string 'Geeks'> > if> ((s1.compare(0, 5, 'Geeks', 5)) == 0)> > cout < < 'This is ' < < s1 < < s2 ;> > > else> > cout < < 'Strings didn't match ';> }> // Driver Code> int> main()> {> > string s1('Geeks');> > string s2('forGeeks');> > compareOperation(s1, s2);> > > return> 0;> }> |