В чем отличие C и C++ от сравнения строк другими словами?Могу ли я использовать! = И == в C++ для сравнения строк без написания собственного?
Я приехал из лагеря «С». Я видел программу, использующую == для сравнения строк, я пытался найти свою программу перегрузки, но не нашел ее. Означает ли это, что C++ имеет дело со строкой (char []) с помощью == и! =?
Если у меня есть свой собственный определенный класс String, будет ли он таким же, как я могу использовать == и! = Без их определения? или применяется только к char []?
Редактировать:
Похоже, что я смешанный символ C [] с C++ std :: string class. Хорошо, старый вопрос все еще применяется. Некоторые из них задавали следующие вопросы:
Мои программы определяли переменные char [], но по сравнению с оператором «==». Казалось, это работа. Они являются строкой в стиле C, но работают с «==». Разве компилятор автоматически конвертировал их в std :: string для меня, чтобы программы работали?
Редактировать2:
Вот рабочий образец.
if(name == "") return;
где "name" - элемент класса MyString. Он имеет конструктор с параметром char *.
MyString имеет публичную функцию data(), она возвращает указатель строки char * C.
Итак, я сравниваю объекты MyString? или строки в стиле C?
Без перегрузки «! =» Я могу сделать что-то вроде ниже?
if(name.data() != somes_[i].data())
....
Просто для справки: http://en.cppreference.com/w/cpp/string/basic_string/operator_cmp – Mgetz
Он не имеет дело с ним, естественно, если строка реализуется как класс, который он должен реализовать operator == для обработки этого сравнения. Используйте std :: string, для которой это определено для вас. – Alex
Вы уверены, что сравнивали 'char *' или 'char []', а не 'std :: string'? Если это так, мне было бы любопытно увидеть код. – crashmstr