Форум программистов, компьютерный форум CyberForum.ru

Пустая строка против строки нулевой длины - C++

Восстановить пароль Регистрация
 
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.01.2013, 13:09     Пустая строка против строки нулевой длины #1
Как лучше проверять std::string на пустоту:
C++
1
s==""
или
C++
1
s.lengt()==0
?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2013, 13:09     Пустая строка против строки нулевой длины
Посмотрите здесь:

C++ переход на строку и пустая строка в файле
Проверить, пустая ли строка. (fstream) C++
проверка пустая строка или нет C++
Пустая строка C++
Условие: если строка пустая - выполнить действие C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
08.01.2013, 13:14     Пустая строка против строки нулевой длины #2
taras atavin, лучше всего так:
C++
1
s.empty()
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
08.01.2013, 13:29     Пустая строка против строки нулевой длины #3
Цитата Сообщение от fasked Посмотреть сообщение
taras atavin, лучше всего так:
C++
1
s.empty()
А разве это не одно и то же?
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
08.01.2013, 13:35     Пустая строка против строки нулевой длины #4
Цитата Сообщение от beta-particle Посмотреть сообщение
А разве это не одно и то же?
С чем?
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
08.01.2013, 14:13     Пустая строка против строки нулевой длины #5
s.lengt()==0
с этим.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
08.01.2013, 14:53     Пустая строка против строки нулевой длины #6
beta-particle, да, стандарт описывает операцию empty как "equivalent to size()==0". То есть логической разницы между ними нет. (Я буду говорить про size, потому что length это просто синоним size в классе std::string). Но:
  • для empty стандартом гарантируется время работы за О(1), а для size никаких гарантий нет. Это важно для написания алгоритмов, которые не зависят от типа контейнера (Особенно актуально для структур, основанных на связных списках).
  • empty короче и точнее выражает намерения, проще читается - мы же все равно думаем "if string is empty", а не "if size of string equals zero".
  • ну и еще одна мелочь, операции length нигде кроме std::string нет, а empty есть у любого контейнера.
beta-particle
 Аватар для beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
08.01.2013, 15:18     Пустая строка против строки нулевой длины #7
Спасибо, разъяснил.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 16:33     Пустая строка против строки нулевой длины
Еще ссылки по теме:

Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки C++
C++ Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки)
Пустая строка в функции C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.01.2013, 16:33  [ТС]     Пустая строка против строки нулевой длины #8
Семантически идентичны все варианты, в плане читабельности лично для меня один чёрт, в плане мысли у меня не такая маленькая память, так что о пустой строке я думаю всеми тремя способами сразу: как о значении строки, как о признаке пустоты и как о нулевой длине. И это внутренняя операция библиотеки, врядли её будет читать кто то другой. Поэтому значение в данном случае имеет только время исполнения: вариант, который не гарантирует время исполнения не меньше, чем у другого, признаётся хуже его.
Yandex
Объявления
08.01.2013, 16:33     Пустая строка против строки нулевой длины
Ответ Создать тему
Опции темы

Текущее время: 13:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru