strcmp или string :: сравнить? - PullRequest
10 голосов
/ 31 марта 2011

Я хочу сравнить две строки. Возможно ли это с strcmp? (Я пытался, и это не похоже на работу). string::compare решение?

Кроме этого, есть ли способ сравнить string с char?


Спасибо за ранние комментарии. Я программировал на C ++, и да, это было std::string, как некоторые из вас упоминали. Я не публиковал код, потому что хотел изучить общие знания, и это довольно длинный код, поэтому он не имел значения для вопроса.

Мне кажется, я узнал разницу между C ++ и C, спасибо за указание на это. И я сейчас попробую использовать перегруженные операторы. И кстати string::compare тоже сработало.

Ответы [ 6 ]

26 голосов
/ 31 марта 2011

Для C ++ используйте std::string и сравните, используя string::compare.

Для C используйте strcmp.Если ваши ( я имел в виду строки ваших программ ) ( по какой-то странной причине ) не прерваны nul, используйте вместо этого strncmp.

Но почемукто-то не использует что-то столь же простое, как == для std::string?

12 голосов
/ 31 марта 2011

Если вы имеете в виду std::string, почему бы не использовать перегруженные операторы: str1 == str2, str1 < str2?

4 голосов
/ 31 марта 2011

См. std::basic_string::compare и std::basic_string справочник операторов (в частности, существует operator==, operator!=, operator< и т. Д.).Что еще нужно?

1 голос
/ 31 марта 2011

std :: string может содержать (и сравнивать!) Встроенные нулевые символы.

are * comp (...) будет сравнивать строки в стиле c, сравнивая до первого нулевого символа (или указанногомакс. число байтов / символов)

string :: compare фактически реализовано в виде шаблона basic_string, поэтому можно ожидать, что он будет работать для других типов, таких как wstring

Для неясной фразы «сравнитьстрока с символом "вы можете сравнить char с * string.begin () или найти первое вхождение (string :: find_first_of и string :: find_first_not_of)

Отказ от ответственности: напечатано на моем HTC, опечатки зарезервированы:)

1 голос
/ 31 марта 2011

По вашему вопросу, "есть ли способ сравнить строку с символом?" Вы имеете в виду "Как я узнаю, содержится ли определенный символ в строке?" Если это так, функция библиотеки C:

  char *strchr(const char *s, int c);

сделает это за вас.

- Пит

1 голос
/ 31 марта 2011

При использовании C ++ используйте функции C ++, а именно. string::compare. При использовании C, и вы вынуждены использовать char* для строки, используйте strcmp

...