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

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

Войти
Регистрация
Восстановить пароль
 
 
Некий_Чел
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 114
#1

Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? - C++

11.02.2016, 09:28. Просмотров 933. Ответов 47
Метки нет (Все метки)

Раздражает писать так:
C++
1
return "";
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2016, 09:28     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса?
Посмотрите здесь:
C++ std::endl; и std::cout"/n"; - одно и то же?
C++ Чем отличается "\n" от std::endl?
Что применить "\n" или "endl"? C++
Какого типа std::endl ? Как сделать так, чтобы функция могла принимать endl в качестве аргумента? C++
C++ error C2886: std::cout: использование символа в "using"-объявлении члена не допускается
C++ Реализовать условие "больше или равно", "меньше или равно" для простых дробей в классе
Где взять файл Sales_item.h для книги Стенли Липпмана "C++ для начинающих" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
11.02.2016, 09:32     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #2
нету,
Цитата Сообщение от Некий_Чел Посмотреть сообщение
Раздражает писать так:
я пишу так
C++
1
return { };
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,184
Завершенные тесты: 1
11.02.2016, 09:50     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #3
А что мешает завести собственную.
C++
1
2
3
const string EMPTY_STRING("");
...
return EMPTY_STRING;
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
11.02.2016, 10:14     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Некий_Чел, Я в основном пользуюсь:
C++
1
return std::string();
Некий_Чел
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 114
11.02.2016, 10:24  [ТС]     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #5
ужс

Добавлено через 3 минуты
ForEveR, это получается создание целого объекта ради такой ерунды
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
11.02.2016, 10:25     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #6
Цитата Сообщение от Некий_Чел Посмотреть сообщение
это получается создание целого объекта ради такой ерунды
а так return ""; не получается?
Некий_Чел
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 114
11.02.2016, 10:29  [ТС]     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #7
zss, заводить переменную в каждом проекте лень, это всё равно что переопределять константу числа "пи" например

Добавлено через 3 минуты
Kastaneda, хотя да, а что делать, если возвращается const char * ?
Kastaneda
Форумчанин
Эксперт С++
4514 / 2856 / 228
Регистрация: 12.12.2009
Сообщений: 7,249
Записей в блоге: 1
Завершенные тесты: 1
11.02.2016, 10:33     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #8
Цитата Сообщение от Некий_Чел Посмотреть сообщение
а что делать, если возвращается const char * ?
можно nullptr возвращать в дефолтном случае.
SergioO
93 / 182 / 63
Регистрация: 13.12.2015
Сообщений: 986
11.02.2016, 10:57     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #9
Цитата Сообщение от Некий_Чел Посмотреть сообщение
Раздражает писать так:

C++
1
return "";
'\0'

C++
1
return '\0';
лучше?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char*  pstr = "\0";
    char astr[] = "\0";
 
    char*  pstr_ = "";
    char astr_[] = "";
 
    
    unsigned n = sizeof(*astr);
    unsigned m = sizeof(*pstr);
    std::cout << n << ' ' << m << '\n';
 
 
            n = sizeof(*astr_);
            m = sizeof(*pstr_);
    std::cout << n << ' ' << m << '\n';
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,184
Завершенные тесты: 1
11.02.2016, 11:20     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #10
Цитата Сообщение от Некий_Чел Посмотреть сообщение
а что делать, если возвращается const char *
Мое мнение, лучше не писать функции, возвращающие указатели на строку символов,
т.к. это чревато ошибками:
C++
1
2
3
4
5
const char* f()
{
    const char* txt="hello";
    return txt;
}
Здесь возвращается указатель на локальную память.
Не факт, что после выхода из функции, она не будет занята чем-то другим.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
11.02.2016, 11:33     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #11
zss, Это слишком общее мнение ИМХО. Если руки откуда надо и голова работает получить код подобный вашему крайне сложно. Разумеется лучше использовать string, но иногда нужны и просто указатели на char.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
11.02.2016, 12:26     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #12
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
5
const char* f()
{
 const char* txt="hello";
 return txt;
}
Здесь возвращается указатель на локальную память.
Указатель на строковый литерал, а не на локальную память. И здесь нет ошибки.
2.14.5/8
A narrow string literal has type “array of n const char”, where n is the size of the string as defined below, and has static storage duration (3.7).
Т.о. строковый литерал "hello" существуют до момента завершения программы.
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
11.02.2016, 18:03     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #13
И насчёт названия темы: endl - это вообще функция.
hoggy
6429 / 2647 / 458
Регистрация: 15.11.2014
Сообщений: 5,836
Завершенные тесты: 1
11.02.2016, 19:22     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #14
Цитата Сообщение от Somebody Посмотреть сообщение
И насчёт названия темы: endl - это вообще функция.
нет такой функции.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2016, 19:24     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса?
Еще ссылки по теме:
Для чего в коде нужна строка "using namespace std"? C++
C++ Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово "нет", то удалить его
C++ Призапуске не происходит не чего... Просто пустой экран с надписью"нажмите кнопку для продолжения"
Как, каким образом "скомпилировать" код для С или С++? C++
C++ Обчисление введенной строки любого формата(пример:"(2+3)/4*2"или"2+3"или ...)

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

Или воспользуйтесь поиском по форуму:
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
11.02.2016, 19:24     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #15
hoggy, endl
C++
1
2
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& endl( std::basic_ostream<CharT, Traits>& os );
То, что по это манипулятор не делает его не функцией.
Yandex
Объявления
11.02.2016, 19:24     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса?
Ответ Создать тему
Опции темы

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