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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

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

08.01.2013, 13:09. Просмотров 1197. Ответов 7
Метки нет (Все метки)

Как лучше проверять std::string на пустоту:
C++
1
s==""
или
C++
1
s.lengt()==0
?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2013, 13:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Пустая строка против строки нулевой длины (C++):

Пустая строка - C++
Делал задание по перегрузке функций. Перегружаю функцию sum. В одном из заданий надо ее перегрузить для подсчета значения переменных типа...

Ошибки (в файле содержатся строки разной длины - записать их в выходной файл в порядке возрастания длины строки) - C++
#include <iostream> #include <set> #include <iterator> #include <fstream> #include <string> #include <algorithm> int main()...

Пустая строка в функции - C++
Имеется такая функция: int setgolf (golf & g) { std::cout << "Введите имя гольфиста: "; std::cin >> g.fullname; if...

Проверить, пустая ли строка. (fstream) - C++
Добрый вечер, ув. форумчане. Допустим есть пример: void main() { char text; ofstream fout("test.txt", ios::app); ...

Ввод данных пока строка не пустая - C++
Задача такая: Создать класс билет, который содержит поля:фамилия, номер рейса, и вводить данные пока строка с фамилией не пустая. Я...

Проверка, пустая строка или нет - C++
Здравствуйте, подскажите как реализовать проверку на пустую строку?? #include <stdlib.h> #include <stdio.h> #include <Windows.h> ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
08.01.2013, 13:14 #2
taras atavin, лучше всего так:
C++
1
s.empty()
1
beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
08.01.2013, 13:29 #3
Цитата Сообщение от fasked Посмотреть сообщение
taras atavin, лучше всего так:
C++
1
s.empty()
А разве это не одно и то же?
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
08.01.2013, 13:35 #4
Цитата Сообщение от beta-particle Посмотреть сообщение
А разве это не одно и то же?
С чем?
0
beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
08.01.2013, 14:13 #5
s.lengt()==0
с этим.
0
fasked
Эксперт С++
4936 / 2516 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 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 есть у любого контейнера.
2
beta-particle
4 / 4 / 0
Регистрация: 07.01.2013
Сообщений: 103
08.01.2013, 15:18 #7
Спасибо, разъяснил.
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
08.01.2013, 16:33  [ТС] #8
Семантически идентичны все варианты, в плане читабельности лично для меня один чёрт, в плане мысли у меня не такая маленькая память, так что о пустой строке я думаю всеми тремя способами сразу: как о значении строки, как о признаке пустоты и как о нулевой длине. И это внутренняя операция библиотеки, врядли её будет читать кто то другой. Поэтому значение в данном случае имеет только время исполнения: вариант, который не гарантирует время исполнения не меньше, чем у другого, признаётся хуже его.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.01.2013, 16:33
Привет! Вот еще темы с ответами:

Переход на строку и пустая строка в файле - C++
Условие. Создайте два выходных файла: в один перепишите из каждой строки первые k слов, в другой - оставшиеся. Если в строке меньше, чем k...

Условие: если строка пустая - выполнить действие - C++
Здравствуйте, если можете, помогите создать такое условие: "Условие: если строка пустая - выполнить действие...", на основе этого...

После чтения числа считывается пустая строка - C++
Нужно считать ряд строк, что-то вроде такого вида: аааа бббб сссс и я попробовал реализовать это через fgets() ...

Построчное чтение из файла, в токором первая строка пустая - C++
Читаю построчно файл и заношу значения из строк в переменные istringstream in(ios_base::in | ios_base::out); ostream...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.01.2013, 16:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru