С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

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

Раздражает писать так:
C++
1
return "";
0
Лучшие ответы (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++
Весь вопрос в теме.... std::endl; и std::cout<<"/n"; - одно и то же?

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

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

Что применить "\n" или "endl"? - C++
Эти две операции похожи - они переходят на новую строку. Но endl очищает буфер, но при этом дольше выполняется. Так что же лучше...

Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел - C++
Вставить пробел после каждого символа "." "," "!" или "?", если за этими символами не следует пробел (т. е. следует любой символ, кроме...

Error C2679: бинарный "<<": не найден оператор, принимающий правый операнд типа "std::string" (или приемлемое - C++
эмулятор работы банкомата Например #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;time.h&gt; #include...

47
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,389
Записей в блоге: 2
Завершенные тесты: 1
11.02.2016, 09:32 #2
нету,
Цитата Сообщение от Некий_Чел Посмотреть сообщение
Раздражает писать так:
я пишу так
C++
1
return { };
0
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,015
Завершенные тесты: 1
11.02.2016, 09:50 #3
А что мешает завести собственную.
C++
1
2
3
const string EMPTY_STRING("");
...
return EMPTY_STRING;
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
11.02.2016, 10:14 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Некий_Чел, Я в основном пользуюсь:
C++
1
return std::string();
3
Некий_Чел
3 / 3 / 0
Регистрация: 27.05.2012
Сообщений: 115
11.02.2016, 10:24  [ТС] #5
ужс

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

Добавлено через 3 минуты
Kastaneda, хотя да, а что делать, если возвращается const char * ?
0
Kastaneda
Jesus loves me
Эксперт С++
4697 / 2901 / 238
Регистрация: 12.12.2009
Сообщений: 7,389
Записей в блоге: 2
Завершенные тесты: 1
11.02.2016, 10:33 #8
Цитата Сообщение от Некий_Чел Посмотреть сообщение
а что делать, если возвращается const char * ?
можно nullptr возвращать в дефолтном случае.
1
SergioO
95 / 184 / 63
Регистрация: 13.12.2015
Сообщений: 992
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
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,015
Завершенные тесты: 1
11.02.2016, 11:20 #10
Цитата Сообщение от Некий_Чел Посмотреть сообщение
а что делать, если возвращается const char *
Мое мнение, лучше не писать функции, возвращающие указатели на строку символов,
т.к. это чревато ошибками:
C++
1
2
3
4
5
const char* f()
{
    const char* txt="hello";
    return txt;
}
Здесь возвращается указатель на локальную память.
Не факт, что после выхода из функции, она не будет занята чем-то другим.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
11.02.2016, 11:33 #11
zss, Это слишком общее мнение ИМХО. Если руки откуда надо и голова работает получить код подобный вашему крайне сложно. Разумеется лучше использовать string, но иногда нужны и просто указатели на char.
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
Somebody
2791 / 1602 / 147
Регистрация: 03.12.2007
Сообщений: 4,200
Завершенные тесты: 1
11.02.2016, 18:03 #13
И насчёт названия темы: endl - это вообще функция.
0
hoggy
6724 / 2909 / 499
Регистрация: 15.11.2014
Сообщений: 6,550
Завершенные тесты: 1
11.02.2016, 19:22 #14
Цитата Сообщение от Somebody Посмотреть сообщение
И насчёт названия темы: endl - это вообще функция.
нет такой функции.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
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
11.02.2016, 19:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.02.2016, 19:24
Привет! Вот еще темы с ответами:

Какого типа std::endl ? Как сделать так, чтобы функция могла принимать endl в качестве аргумента? - C++
Что надо указать в прототипе функции, чтобы можно передавать std::endl в качестве аргумента? Уже 3 часа голову ломаю! :wall: Помогите,...

error C2886: std::cout: использование символа в "using"-объявлении члена не допускается - C++
подскажите плз что ето может бить...если не подключаю файл Nokia.h тогда всьо норм.. #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include...

Реализовать условие "больше или равно", "меньше или равно" для простых дробей в классе - C++
как реализовать условие больше или равно, меньше или равно для простых дробей в классе?

Где взять файл Sales_item.h для книги Стенли Липпмана "C++ для начинающих" - C++
Всем привет! Изучая классы по книге Стенли Липпмана &quot;с++ для начинающих&quot;, столкнулся с такой проблемой - где взят файл Sales_item.h? Там...


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

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

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