Какова правильная функция для сравнения двух строк в стиле C? - PullRequest
6 голосов
/ 03 февраля 2012

Так что у меня есть дилемма.Мне нужно сравнить две строки в стиле C, и я искал функции, которые были бы наиболее подходящими:

memcmp   //Compare two blocks of memory (function)
strcmp   //Compare two strings (function )
strcoll  //Compare two strings using locale (function)
strncmp  //Compare characters of two strings (function)
strxfrm  //Transform string using locale (function)

Первая, я думаю, относится к адресам, поэтому идея отсутствует.Второй вариант звучит для меня как лучший выбор, но я все равно хочу услышать отзывы.Три других оставляют меня в неведении.

Ответы [ 2 ]

20 голосов
/ 03 февраля 2012

Для общего сравнения строк, strcmp - подходящая функция.Вы должны использовать strncmp только для сравнения некоторого количества символов из строки (например, префикса) и memcmp для сравнения блоков памяти.

Тем не менее, поскольку вы используете C ++,вам следует избегать этого в целом и использовать класс std::string, который намного проще в использовании и в целом безопаснее, чем строки в стиле C.Вы можете легко сравнить два std::string s на равенство, просто используя оператор ==.

Надеюсь, это поможет!

3 голосов
/ 03 февраля 2012

Оба memcmp и strcmp будут работать нормально. Чтобы использовать первое, вам нужно заранее знать длину более короткой строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...