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

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

Восстановить пароль Регистрация
 
 
Некий_Чел
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 110
11.02.2016, 09:28     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #1
Раздражает писать так:
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++ Есть какая нибудь информация по созданию алгоритма или программы для автопилота
Найти строки матрицы, где есть эл-т для которого сумма предшествующих равна сумме следующих за ним элементов C++
C++ А есть какой нибудь широкий аналог std::ofstream?
#include <listream>. Std. Endl C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.02.2016, 09:32     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #2
нету,
Цитата Сообщение от Некий_Чел Посмотреть сообщение
Раздражает писать так:
я пишу так
C++
1
return { };
zss
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,191
Завершенные тесты: 1
11.02.2016, 09:50     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #3
А что мешает завести собственную.
C++
1
2
3
const string EMPTY_STRING("");
...
return EMPTY_STRING;
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
11.02.2016, 10:14     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Некий_Чел, Я в основном пользуюсь:
C++
1
return std::string();
Некий_Чел
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 110
11.02.2016, 10:24  [ТС]     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #5
ужс

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

Добавлено через 3 минуты
Kastaneda, хотя да, а что делать, если возвращается const char * ?
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
11.02.2016, 10:33     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #8
Цитата Сообщение от Некий_Чел Посмотреть сообщение
а что делать, если возвращается const char * ?
можно nullptr возвращать в дефолтном случае.
SergioO
 Аватар для SergioO
89 / 178 / 61
Регистрация: 13.12.2015
Сообщений: 971
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
Модератор
Эксперт С++
 Аватар для zss
5948 / 5553 / 1785
Регистрация: 18.12.2011
Сообщений: 14,191
Завершенные тесты: 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
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
11.02.2016, 11:33     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #11
zss, Это слишком общее мнение ИМХО. Если руки откуда надо и голова работает получить код подобный вашему крайне сложно. Разумеется лучше использовать string, но иногда нужны и просто указатели на char.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
11.02.2016, 18:03     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #13
И насчёт названия темы: endl - это вообще функция.
hoggy
5228 / 2119 / 403
Регистрация: 15.11.2014
Сообщений: 4,812
Завершенные тесты: 1
11.02.2016, 19:22     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #14
Цитата Сообщение от Somebody Посмотреть сообщение
И насчёт названия темы: endl - это вообще функция.
нет такой функции.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 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 );
То, что по это манипулятор не делает его не функцией.
nd2
1048 / 787 / 267
Регистрация: 29.01.2016
Сообщений: 2,465
11.02.2016, 19:25     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #16
Цитата Сообщение от hoggy Посмотреть сообщение
нет такой функции.
А что же это тогда?
http://www.cplusplus.com/reference/o.../endl/?kw=endl
hoggy
5228 / 2119 / 403
Регистрация: 15.11.2014
Сообщений: 4,812
Завершенные тесты: 1
11.02.2016, 19:38     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #17
Цитата Сообщение от ForEveR Посмотреть сообщение
То, что по это манипулятор не делает его не функцией.
по вашей ссылке чем то смахивает на шаблон, не?

Цитата Сообщение от nd2 Посмотреть сообщение
А что же это тогда?
ого, действительно функция.
тогда беру свои слова обратно.

хотя конечно странно...
у меня почему то ни в гццешной, ни в студийной стандартной либе
эта функция не находится.

вы уверены, что это не просто синопсис,
и что такая функция действительно существует?

вот здесь почему то упоминаний о функции уже нет:
http://en.cppreference.com/w/cpp/io/manip/endl
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
11.02.2016, 19:42     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #18
Цитата Сообщение от hoggy Посмотреть сообщение
по вашей ссылке чем то смахивает на шаблон, не?
Шаблон. Это делает его не функцией?
Пример
hoggy
5228 / 2119 / 403
Регистрация: 15.11.2014
Сообщений: 4,812
Завершенные тесты: 1
11.02.2016, 19:44     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #19
Цитата Сообщение от ForEveR Посмотреть сообщение
Шаблон. Это делает его не функцией?
разве это не очевидно?

шаблон - рецепт, на основе которого,
компилятору ещё только предстоит сгенерировать функцию.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2016, 19:51     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса?
Еще ссылки по теме:

Как скопировать подстроку из строки до определенного символа? Или удалить, начиная с этого символа C++
Ошибка в std::cout<<std::endl C++
Как узнать, что есть данные для ввода, которые можно забрать std::cin C++

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

Или воспользуйтесь поиском по форуму:
Fallenworld
75 / 75 / 9
Регистрация: 14.04.2014
Сообщений: 408
11.02.2016, 19:51     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #20
C++
1
2
3
4
5
 
 template<typename _CharT, typename _Traits>
    inline basic_ostream<_CharT, _Traits>&
    endl(basic_ostream<_CharT, _Traits>& __os)
    { return flush(__os.put(__os.widen('\n'))); }
это действительно шаблон функции.Я думал, что это функтор, но нет.
Yandex
Объявления
11.02.2016, 19:51     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса?
Ответ Создать тему
Опции темы

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