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

Объекты cin, cout, endl и т.п - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
02.04.2014, 16:04     Объекты cin, cout, endl и т.п #1
Вопрос. Можно ли использовать эти объекты по умолчанию или одной командой? Типа:
using std::"все объекты"
Лень каждый раз напомнит что использую тот или иной объект. Или как они там называются ( я только начинаю изучать с++)

Потом я не знаю сколько их там. Если там в библиотеке объектов несколько десятки то это здорово увеличит "вес" программы.

Я не страиваю алгоритмы. Даже когда изучал Basic с его то громоздким кодом я не строил алгоритм.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2014, 16:04     Объекты cin, cout, endl и т.п
Посмотрите здесь:

Не работают cin и cout C++
C++ iostream.h (непонятки с cout, endl )
cin cout C++
C++ почему не определяются cout , cin , endl,system
C++ Ошибка на cout и cin
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11822 / 6801 / 769
Регистрация: 27.09.2012
Сообщений: 16,868
Записей в блоге: 2
Завершенные тесты: 1
02.04.2014, 16:13     Объекты cin, cout, endl и т.п #2
можно всё пространство использовать:
C++
1
using namespace std ;
Добавлено через 52 секунды
Цитата Сообщение от Altair42 Посмотреть сообщение
Если там в библиотеке объектов несколько десятки то это здорово увеличит "вес" программы.
всё что не используется будет откинуто
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
02.04.2014, 16:14     Объекты cin, cout, endl и т.п #3
Цитата Сообщение от Altair42 Посмотреть сообщение
Если там в библиотеке объектов несколько десятки то это здорово увеличит "вес" программы.
С чего вдруг?

Не по теме:

Как же всем лень писать std:: ...

SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,332
Завершенные тесты: 1
02.04.2014, 16:26     Объекты cin, cout, endl и т.п #4
Altair42, еще один извращенный вариант. Вам понравится.
Создайте .h файл, напишите в него один раз все using std::"что требуется", и подключайте в своих проектах всего одной строкой.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
02.04.2014, 18:04  [ТС]     Объекты cin, cout, endl и т.п #5
можно всё пространство использовать:
Код C++
1
using namespace std ;
Спасибо большое!

Добавлено через 4 минуты
Цитата Сообщение от 0x10 Посмотреть сообщение
С чего вдруг?
Пример:
Пишу себе программу. Ну большую. Надо использовать до фига и больше этих объектов. Целая страница будет заполнена using std::...

Еще пример. Пишу себе программу. же несколько страниц. Короче увлекся. Нужна использовать объект которого не добавил и программа не сможет опознать. Надо будет вернуться и добавит - лень. Или совсем забуду добавит. потом начни искать ошибку в коде из десяти страниц.
recoder
 Аватар для recoder
129 / 129 / 28
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
02.04.2014, 18:09     Объекты cin, cout, endl и т.п #6
Пишите std:: и всё.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
02.04.2014, 19:43  [ТС]     Объекты cin, cout, endl и т.п #7
попробую )
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
02.04.2014, 22:24     Объекты cin, cout, endl и т.п #8
Цитата Сообщение от Altair42 Посмотреть сообщение
Пишу себе программу. Ну большую. Надо использовать до фига и больше этих объектов. Целая страница будет заполнена using std::...
Большие программы лучше писать в виде набора из нескольких исходных файлов. Так и легче будет разбираться в структуре программы, и каждый файл будет содержать весьма умеренное количество using.
Цитата Сообщение от Altair42 Посмотреть сообщение
Пишу себе программу. же несколько страниц. Короче увлекся. Нужна использовать объект которого не добавил и программа не сможет опознать. Надо будет вернуться и добавит - лень.
Опять же, с небольшими исходными файлами это не станет проблемой.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
04.04.2014, 08:27  [ТС]     Объекты cin, cout, endl и т.п #9
Nick Alte, в любом случае проще использовать все облако чем писать 5 - 6 раз.
DrOffset
6425 / 3799 / 880
Регистрация: 30.01.2014
Сообщений: 6,592
04.04.2014, 09:07     Объекты cin, cout, endl и т.п #10
Цитата Сообщение от Altair42 Посмотреть сообщение
чем писать 5 - 6 раз.
Почему бы просто не писать
C++
1
2
std::cout
std::cin
Да, чуть длинее, зато обезопасишь себя от возможного конфликта имен, при использовании unsing namespace. Все равно, практически гарантированно в любой софтверной конторе using namespace либо вообще запрещен к использованию, либо имеет строгие рамки применения.
korvin_
 Аватар для korvin_
1325 / 1096 / 160
Регистрация: 28.04.2012
Сообщений: 3,923
04.04.2014, 10:33     Объекты cin, cout, endl и т.п #11
Цитата Сообщение от DrOffset Посмотреть сообщение
Да, чуть длинее, зато обезопасишь себя от возможного конфликта имен, при использовании unsing namespace. Все равно, практически гарантированно в любой софтверной конторе using namespace либо вообще запрещен к использованию, либо имеет строгие рамки применения.
Как вариант, можно импортировать только самое частоиспользующееся, и если точно знаешь, что оно ни с чем не будет конфликтовать. Например:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
using std::cout;
using std::endl;
 
int main()
{
    cout << "Hello World" << endl;
    return 0;
}
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
04.04.2014, 13:25  [ТС]     Объекты cin, cout, endl и т.п #12
Ребят как я понял std - название библиотеки. В самой библиотеке конфликт имен не возможно. Если написать using namespace std; это не означает ли что используется конкретная библиотека с названием "std". Или я не прав?

Конфликт возможен только если в программе используется несколько библиотек. В этом случае конфликт будет как бы программист не старался. Допустим "cout" есть в библиотеке "std" и есть в какой то другой, называется допустим "Х" и отвечает за какое то другое действие ( чисто гипотетически ).

Использование в одной программе 2 cout из разных библиотек приведет к конфликту. Если только каждый раз при использование не напомнит программе что именно этот cout который отвечает за хз что взят из библиотеки "Х". Если напомнит что объект взят из другой библиотеки каждый раз когда его используешь то не имеет значение ты используешь команду "using namespace std;" или "using std::cout;".
DrOffset
6425 / 3799 / 880
Регистрация: 30.01.2014
Сообщений: 6,592
04.04.2014, 14:04     Объекты cin, cout, endl и т.п #13
Цитата Сообщение от Altair42 Посмотреть сообщение
Ребят как я понял std - название библиотеки. В самой библиотеке конфликт имен не возможно. Если написать using namespace std; это не означает ли что используется конкретная библиотека с названием "std". Или я не прав?
Нет. Это пространство имен, а не библиотека. Вот ситуация (самая простая из возможных):
Есть пространство имен А, там определена функция f (int, int).
Есть пространство имен B, там тоже определена функция f(int, int).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
namespace A
{
    void f(int, int) { }
}
 
namespace B
{
    void f(int, int) { }
}
 
using namespace A;
using namespace B;
 
int main ()
{
    f(1, 1); //ошибка, нельзя выбрать функцию
}
Если же писать так, то данная проблема будет исключена:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
namespace A
{
    void f(int, int) { }
}
 
namespace B
{
    void f(int, int) { }
}
 
 
int main ()
{
    A::f(1, 1);
    B::f(1, 1);
}
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
04.04.2014, 18:51  [ТС]     Объекты cin, cout, endl и т.п #14
DrOffset, Вы меня не поняли.

Допустим я использую пространство А и Б. Но чаше всего А. То есть пока пишу программу буду использовать пространство А по крайней мере десятки раз. А пространство Б лишь несколько раз. Не проще ли добавит пространство А полностью а из Б конкретные объекты при необходимости по ходу дела. Или так не возможно?
Пример:

using namespase A;
int main()
{
Какой та там код.

Команда для добавление объекта из другого пространства

Какой та там код с использованием введенного пространства и выход из того пространства.

продолжение....
}

Вы пример привели из 2 объектов, с 2 пространств. Если добавит каждый объект таким же способом чтоб программа не зависла, то первая сотня строки будут только записи о пространствах и используемых объектах.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
04.04.2014, 19:10     Объекты cin, cout, endl и т.п #15
Цитата Сообщение от Altair42 Посмотреть сообщение
То есть пока пишу программу буду использовать пространство А по крайней мере десятки раз. А пространство Б лишь несколько раз
А вы на начало написания программы из нескольких тысяч строк можете предсказать интенсивность использования имен из конкретного неймспейса?

Не усложняйте на ровном месте, серьезно.
DrOffset
6425 / 3799 / 880
Регистрация: 30.01.2014
Сообщений: 6,592
04.04.2014, 19:14     Объекты cin, cout, endl и т.п #16
Цитата Сообщение от Altair42 Посмотреть сообщение
первая сотня строки будут только записи о пространствах и используемых объектах.
И зачем это делать? Я говорил о том, что в большинстве случаев достаточно использовать полное имя с включением пространства имен, как я показал в примере. Это нецелесообразно только в том случае, если вложенность пространств имен большая. Тогда можно сделать using namespace А::B::C; внутри того scope, в котором используются сущности из C. Либо воспользоваться псевдонимами для пространств имен
C++
1
namespace localC = A::B::C;
тоже настолько локально, насколько это позволяет задача. Пойнт в том, что глобальные включения в больших проектах могут непредсказуемо повлиять на код. Поэтому и не рекомендуется засорять текущее пространство имен лишними именами.

Цитата Сообщение от Altair42 Посмотреть сообщение
А пространство Б лишь несколько раз. Не проще ли добавит пространство А полностью а из Б конкретные объекты при необходимости по ходу дела.
Да можно и добавить. Зависит же это от многих вещей. Вообще когда учишься или пишешь для себя можно делать все, что хочешь. Я просто предупредил, что если приучиться к плохому стилю, скорее всего потом придется жестко переучиваться. Ну это конечно в том случае, если есть намерение связать профессиональную деятельность с программированием.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
04.04.2014, 20:06  [ТС]     Объекты cin, cout, endl и т.п #17
Ок я вас понял.
На счет программирование. Моя профессия ИТ. Но как многие знают в университетах третьих стран не к чему нормальному не учат. Мы типа изучали Бейзик и то на доске и на бумаге. Visual Basic в лицо не видел, в первые я узнал что есть еще несколько ОС для ПС через год после окончание универа. Вот и хочу узнать все подробности. Я некогда не ограничивался рамками. Помню я хотел вычислит другой способ найти дискриминант.

Я это к тому что у меня еще много будут бредовых для вас вопросов.

Добавлено через 14 минут
Вопрос не по теме. На каком языке написан Линукс? И на каком языке принимает команды?
DrOffset
6425 / 3799 / 880
Регистрация: 30.01.2014
Сообщений: 6,592
04.04.2014, 20:28     Объекты cin, cout, endl и т.п #18
Цитата Сообщение от Altair42 Посмотреть сообщение
На каком языке написан Линукс?
Ядро на С.
Цитата Сообщение от Altair42 Посмотреть сообщение
И на каком языке принимает команды?
Немножко неточная формулировка, но я думаю, что верно понял. Писать для Linux можно на любом языке (был бы инструментарий), системное ABI же соответствует C calling convention.
Altair42
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 322
04.04.2014, 20:35  [ТС]     Объекты cin, cout, endl и т.п #19
Нуу я имел введу на каком языке к нему обращаться? Какой учит чтоб понять Линукс.

Я думал у него ядро на Ассемблер.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2014, 20:44     Объекты cin, cout, endl и т.п
Еще ссылки по теме:

Перегрузка cin/cout C++
C++ cin, cout, endl не определены
C++ Cin cout

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

Или воспользуйтесь поиском по форуму:
DrOffset
6425 / 3799 / 880
Регистрация: 30.01.2014
Сообщений: 6,592
04.04.2014, 20:44     Объекты cin, cout, endl и т.п #20
Цитата Сообщение от Altair42 Посмотреть сообщение
Я думал у него ядро на Ассемблер.
Ассемблер там есть. Но большая часть кода на С.
Цитата Сообщение от Altair42 Посмотреть сообщение
Нуу я имел введу на каком языке к нему обращаться? Какой учит чтоб понять Линукс.
Понять, в смысле исходники ядра? Если да, то С. Это основной язык.
Если просто программировать приложения для Linux, то подойдет и любой другой, который умеет делать вызовы С функций (это практически любой современный язык, главное чтобы он вообще под Linux существовал). В любой случае сейчас у многих языков обширные библиотеки, поэтому в зависимости от задачи может быть вообще не придется сталкиваться с системными вызовами.
Yandex
Объявления
04.04.2014, 20:44     Объекты cin, cout, endl и т.п
Ответ Создать тему
Опции темы

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