2010-08-10 3 views
-1

Может ли кто-нибудь из PLS сообщить мне точный код C++ чувствительной к регистру функции сравнения класса string?Сравнение случайных строк в C++

+4

@Aman Saleem: Что не так с оператором ==? –

+4

чувствительный к регистру или нечувствительный к регистру? – Naveen

+0

Пожалуйста, дайте ваши вопросы более наглядным названиям - «Объектно-ориентированное программирование на C++» является слишком общим. Я пошел и сделал это для вас. –

ответ

4
std::string str1("A new String"); 
std::string str2("a new STring"); 
if(str1.compare(str2) == 0) 
    std::cout<<"Equal";  // str1("A new String") str2("A new String"); 
else 
    std::cout<<"unEqual"; //str1("A new String") str2("a new STring") 

сравнить() возвращает целое значение, а не логическое значение. Возвращаемое значение имеет следующее значение: 0 означает равное, значение меньше нуля означает меньше, а значение больше нуля означает больше

+0

Может ли u вывести код в том, что str1 равен str2, если обе строки равны и дают вывод, что str1 не равен str2, если обе строки не равны? –

+1

Почему вы используете сравнение, а не 'operator =='? –

5

Как насчет?

std::string str1, str2; 
/* do stuff to str1 and str2 */ 
if (str1 == str2) { /* do something */ } 

Или

if (str1.compare(str2) == 0) { /* the strings are the same */ } 
2

== перегружен для сравнения строк в C++ AFAIK (в отличие от Java, где и должны использовать myString.equals (..))

Если вы хотите игнорировать регистр при сравнении, просто преобразовать обе строки в верхний или нижний регистр, как описано здесь: Convert a String In C++ To Upper Case

1
#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    string str1 ("green apple"); 
    string str2 ("red apple"); 

    if (str1.compare(str2) != 0) 
    cout << str1 << " is not " << str2 << "\n"; 

    if (str1.compare(6,5,"apple") == 0) 
    cout << "still, " << str1 << " is an apple\n"; 

    if (str2.compare(str2.size()-5,5,"apple") == 0) 
    cout << "and " << str2 << " is also an apple\n"; 

    if (str1.compare(6,5,str2,4,5) == 0) 
    cout << "therefore, both are apples\n"; 

    return 0; 
} 

Я получил его от http://www.cplusplus.com/reference/string/string/compare/

Надежды google work !!

Но использование == оператор как s1 == s2 также будет работать хорошо