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

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

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

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

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

Раздражает писать так:
C++
1
return "";
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2016, 09:28     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса?
Посмотрите здесь:

Для чего в коде нужна строка "using namespace std"? C++
C++ Призапуске не происходит не чего... Просто пустой экран с надписью"нажмите кнопку для продолжения"
C++ Обчисление введенной строки любого формата(пример:"(2+3)/4*2"или"2+3"или ...)
C++ error C2886: std::cout: использование символа в "using"-объявлении члена не допускается
C++ std::endl; и std::cout"/n"; - одно и то же?
C++ Реализовать условие "больше или равно", "меньше или равно" для простых дробей в классе
C++ Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово "нет", то удалить его
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4252 / 2784 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
11.02.2016, 09:32     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #2
нету,
Цитата Сообщение от Некий_Чел Посмотреть сообщение
Раздражает писать так:
я пишу так
C++
1
return { };
zss
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,597
Завершенные тесты: 1
11.02.2016, 09:50     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #3
А что мешает завести собственную.
C++
1
2
3
const string EMPTY_STRING("");
...
return EMPTY_STRING;
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
11.02.2016, 10:14     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Некий_Чел, Я в основном пользуюсь:
C++
1
return std::string();
Некий_Чел
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 112
11.02.2016, 10:24  [ТС]     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #5
ужс

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

Добавлено через 3 минуты
Kastaneda, хотя да, а что делать, если возвращается const char * ?
Kastaneda
Форумчанин
Эксперт С++
 Аватар для Kastaneda
4252 / 2784 / 219
Регистрация: 12.12.2009
Сообщений: 7,109
Записей в блоге: 1
Завершенные тесты: 1
11.02.2016, 10:33     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #8
Цитата Сообщение от Некий_Чел Посмотреть сообщение
а что делать, если возвращается const char * ?
можно nullptr возвращать в дефолтном случае.
SergioO
 Аватар для 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
Модератор
Эксперт С++
 Аватар для zss
6112 / 5715 / 1849
Регистрация: 18.12.2011
Сообщений: 14,597
Завершенные тесты: 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
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
11.02.2016, 11:33     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #11
zss, Это слишком общее мнение ИМХО. Если руки откуда надо и голова работает получить код подобный вашему крайне сложно. Разумеется лучше использовать string, но иногда нужны и просто указатели на char.
Tulosba
:)
Эксперт С++
4384 / 3227 / 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
2775 / 1589 / 142
Регистрация: 03.12.2007
Сообщений: 4,162
Завершенные тесты: 1
11.02.2016, 18:03     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #13
И насчёт названия темы: endl - это вообще функция.
hoggy
5715 / 2306 / 417
Регистрация: 15.11.2014
Сообщений: 5,150
Завершенные тесты: 1
11.02.2016, 19:22     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #14
Цитата Сообщение от Somebody Посмотреть сообщение
И насчёт названия темы: endl - это вообще функция.
нет такой функции.
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 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
1344 / 1083 / 370
Регистрация: 29.01.2016
Сообщений: 3,337
11.02.2016, 19:25     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #16
Цитата Сообщение от hoggy Посмотреть сообщение
нет такой функции.
А что же это тогда?
http://www.cplusplus.com/reference/o.../endl/?kw=endl
hoggy
5715 / 2306 / 417
Регистрация: 15.11.2014
Сообщений: 5,150
Завершенные тесты: 1
11.02.2016, 19:38     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #17
Цитата Сообщение от ForEveR Посмотреть сообщение
То, что по это манипулятор не делает его не функцией.
по вашей ссылке чем то смахивает на шаблон, не?

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

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

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

вот здесь почему то упоминаний о функции уже нет:
http://en.cppreference.com/w/cpp/io/manip/endl
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7958 / 4720 / 319
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
11.02.2016, 19:42     Есть ли в std, или где-нибудь ещё, константа для пустой строки (""), как endl (\n) для символа переноса? #18
Цитата Сообщение от hoggy Посмотреть сообщение
по вашей ссылке чем то смахивает на шаблон, не?
Шаблон. Это делает его не функцией?
Пример
hoggy
5715 / 2306 / 417
Регистрация: 15.11.2014
Сообщений: 5,150
Завершенные тесты: 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) для символа переноса?
Еще ссылки по теме:

Что применить "\n" или "endl"? C++
C++ Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел
C++ Чем отличается "\n" от std::endl?
Как, каким образом "скомпилировать" код для С или С++? C++
C++ Error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое

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

Или воспользуйтесь поиском по форуму:
Fallenworld
76 / 76 / 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) для символа переноса?
Ответ Создать тему
Опции темы

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