Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 120
1

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

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

Раздражает писать так:
C++
1
return "";
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.02.2016, 09:28
Ответы с готовыми решениями:

Есть ли у кого-нибудь в электронном виде или где скачать книгу "Красота физики" Фрэнка Вильчека?
Здравствуйте! Есть ли у кого-нибудь в электронном виде или где скачать книгу "Красота физики"...

std::endl; и std::cout"/n"; - одно и то же?
Весь вопрос в теме.... std::endl; и std::cout<<"/n"; - одно и то же?

Для массива из 10 чисел проверить, есть ли в нем два одинаковых числа и напечатать "да" или "нет"
void check_same(const int* a) { for (const int* p = a; p < a + 9; p++) for (const...

Для заданного массива из 10 чисел проверить, есть ли в нем два числа, отличающихся ровно на 1, напечатать "да" или "нет"
Для заданного массива из 10 чисел проверить, есть ли в нем два числа, отличающихся ровно на 1, и...

47
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
11.02.2016, 09:32 2
нету,
Цитата Сообщение от Некий_Чел Посмотреть сообщение
Раздражает писать так:
я пишу так
C++
1
return { };
0
Модератор
Эксперт С++
9689 / 8285 / 5054
Регистрация: 18.12.2011
Сообщений: 22,152
11.02.2016, 09:50 3
А что мешает завести собственную.
C++
1
2
3
const string EMPTY_STRING("");
...
return EMPTY_STRING;
1
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
11.02.2016, 10:14 4
Лучший ответ Сообщение было отмечено SatanaXIII как решение

Решение

Некий_Чел, Я в основном пользуюсь:
C++
1
return std::string();
3
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 120
11.02.2016, 10:24  [ТС] 5
ужс

Добавлено через 3 минуты
ForEveR, это получается создание целого объекта ради такой ерунды
0
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
11.02.2016, 10:25 6
Цитата Сообщение от Некий_Чел Посмотреть сообщение
это получается создание целого объекта ради такой ерунды
а так return ""; не получается?
0
4 / 4 / 0
Регистрация: 27.05.2012
Сообщений: 120
11.02.2016, 10:29  [ТС] 7
zss, заводить переменную в каждом проекте лень, это всё равно что переопределять константу числа "пи" например

Добавлено через 3 минуты
Kastaneda, хотя да, а что делать, если возвращается const char * ?
0
Jesus loves me
Эксперт С++
5096 / 3110 / 351
Регистрация: 12.12.2009
Сообщений: 7,845
Записей в блоге: 2
11.02.2016, 10:33 8
Цитата Сообщение от Некий_Чел Посмотреть сообщение
а что делать, если возвращается const char * ?
можно nullptr возвращать в дефолтном случае.
1
248 / 199 / 96
Регистрация: 13.12.2015
Сообщений: 1,037
11.02.2016, 10:57 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';
0
Модератор
Эксперт С++
9689 / 8285 / 5054
Регистрация: 18.12.2011
Сообщений: 22,152
11.02.2016, 11:20 10
Цитата Сообщение от Некий_Чел Посмотреть сообщение
а что делать, если возвращается const char *
Мое мнение, лучше не писать функции, возвращающие указатели на строку символов,
т.к. это чревато ошибками:
C++
1
2
3
4
5
const char* f()
{
    const char* txt="hello";
    return txt;
}
Здесь возвращается указатель на локальную память.
Не факт, что после выхода из функции, она не будет занята чем-то другим.
0
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
11.02.2016, 11:33 11
zss, Это слишком общее мнение ИМХО. Если руки откуда надо и голова работает получить код подобный вашему крайне сложно. Разумеется лучше использовать string, но иногда нужны и просто указатели на char.
1
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
11.02.2016, 12:26 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" существуют до момента завершения программы.
4
2818 / 1628 / 252
Регистрация: 03.12.2007
Сообщений: 4,223
11.02.2016, 18:03 13
И насчёт названия темы: endl - это вообще функция.
0
Эксперт С++
8120 / 3734 / 798
Регистрация: 15.11.2014
Сообщений: 8,472
11.02.2016, 19:22 14
Цитата Сообщение от Somebody Посмотреть сообщение
И насчёт названия темы: endl - это вообще функция.
нет такой функции.
0
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
11.02.2016, 19:24 15
hoggy, endl
C++
1
2
template< class CharT, class Traits >
std::basic_ostream<CharT, Traits>& endl( std::basic_ostream<CharT, Traits>& os );
То, что по это манипулятор не делает его не функцией.
0
nd2
3399 / 2781 / 1250
Регистрация: 29.01.2016
Сообщений: 9,423
11.02.2016, 19:25 16
Цитата Сообщение от hoggy Посмотреть сообщение
нет такой функции.
А что же это тогда?
http://www.cplusplus.com/refer... l/?kw=endl
0
Эксперт С++
8120 / 3734 / 798
Регистрация: 15.11.2014
Сообщений: 8,472
11.02.2016, 19:38 17
Цитата Сообщение от ForEveR Посмотреть сообщение
То, что по это манипулятор не делает его не функцией.
по вашей ссылке чем то смахивает на шаблон, не?

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

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

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

вот здесь почему то упоминаний о функции уже нет:
http://en.cppreference.com/w/cpp/io/manip/endl
0
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
11.02.2016, 19:42 18
Цитата Сообщение от hoggy Посмотреть сообщение
по вашей ссылке чем то смахивает на шаблон, не?
Шаблон. Это делает его не функцией?
Пример
0
Эксперт С++
8120 / 3734 / 798
Регистрация: 15.11.2014
Сообщений: 8,472
11.02.2016, 19:44 19
Цитата Сообщение от ForEveR Посмотреть сообщение
Шаблон. Это делает его не функцией?
разве это не очевидно?

шаблон - рецепт, на основе которого,
компилятору ещё только предстоит сгенерировать функцию.
0
76 / 76 / 32
Регистрация: 14.04.2014
Сообщений: 408
11.02.2016, 19:51 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'))); }
это действительно шаблон функции.Я думал, что это функтор, но нет.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.02.2016, 19:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как написать регулярное выражение для выдергивания английских букв и символов: "+", ",", ":", "-", " ", "!", "?" и "."
Не могу ни как собразить как написать регулярное выражение для выдергивания английских букв и...

Напишите программу для проверки, есть ли в слове X буква "о". Если есть, то замените все буквы "о" на "ку"
ребятки, очень прошу помогите!!))) вот такую штуку надо сделать в паскале, а я не очень в этом...

Чем отличается "\n" от std::endl?
чем они отличаются?

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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