0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
1

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

02.04.2014, 16:04. Показов 4284. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вопрос. Можно ли использовать эти объекты по умолчанию или одной командой? Типа:
using std::"все объекты"
Лень каждый раз напомнит что использую тот или иной объект. Или как они там называются ( я только начинаю изучать с++)

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

Я не страиваю алгоритмы. Даже когда изучал Basic с его то громоздким кодом я не строил алгоритм.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.04.2014, 16:04
Ответы с готовыми решениями:

cin, cout, endl не определены
Всем здрасте=) Есть исходник, он работает и всё с ним отлично, мне необходимо его...

Undeclared identifier (cout, endl, cin)
#include "iostream" #include "stdafx.h" #include "cmath" #include "cstdio" using...

Почему не определяются cout, cin, endl, system?
int i,n,k1,k2; float min,s=0; cout<<" n="; cin>>n; float* a=new float ; ...

Cout <<endl; Что это значит? Если ничего нету в cout?
Здравствуйте ! Обьясните пожалуйста что значит cout &lt;&lt;endl; если он используется после цикла...

22
Неэпический
17869 / 10634 / 2054
Регистрация: 27.09.2012
Сообщений: 26,736
Записей в блоге: 1
02.04.2014, 16:13 2
можно всё пространство использовать:
C++
1
using namespace std ;
Добавлено через 52 секунды
Цитата Сообщение от Altair42 Посмотреть сообщение
Если там в библиотеке объектов несколько десятки то это здорово увеличит "вес" программы.
всё что не используется будет откинуто
1
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
02.04.2014, 16:14 3
Цитата Сообщение от Altair42 Посмотреть сообщение
Если там в библиотеке объектов несколько десятки то это здорово увеличит "вес" программы.
С чего вдруг?

Не по теме:

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

1
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
02.04.2014, 16:26 4
Altair42, еще один извращенный вариант. Вам понравится.
Создайте .h файл, напишите в него один раз все using std::"что требуется", и подключайте в своих проектах всего одной строкой.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
02.04.2014, 18:04  [ТС] 5
можно всё пространство использовать:
Код C++
1
using namespace std ;
Спасибо большое!

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

Еще пример. Пишу себе программу. же несколько страниц. Короче увлекся. Нужна использовать объект которого не добавил и программа не сможет опознать. Надо будет вернуться и добавит - лень. Или совсем забуду добавит. потом начни искать ошибку в коде из десяти страниц.
0
135 / 134 / 53
Регистрация: 13.09.2013
Сообщений: 260
Записей в блоге: 2
02.04.2014, 18:09 6
Пишите std:: и всё.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
02.04.2014, 19:43  [ТС] 7
попробую )
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
02.04.2014, 22:24 8
Цитата Сообщение от Altair42 Посмотреть сообщение
Пишу себе программу. Ну большую. Надо использовать до фига и больше этих объектов. Целая страница будет заполнена using std::...
Большие программы лучше писать в виде набора из нескольких исходных файлов. Так и легче будет разбираться в структуре программы, и каждый файл будет содержать весьма умеренное количество using.
Цитата Сообщение от Altair42 Посмотреть сообщение
Пишу себе программу. же несколько страниц. Короче увлекся. Нужна использовать объект которого не добавил и программа не сможет опознать. Надо будет вернуться и добавит - лень.
Опять же, с небольшими исходными файлами это не станет проблемой.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
04.04.2014, 08:27  [ТС] 9
Nick Alte, в любом случае проще использовать все облако чем писать 5 - 6 раз.
0
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
04.04.2014, 09:07 10
Цитата Сообщение от Altair42 Посмотреть сообщение
чем писать 5 - 6 раз.
Почему бы просто не писать
C++
1
2
std::cout
std::cin
Да, чуть длинее, зато обезопасишь себя от возможного конфликта имен, при использовании unsing namespace. Все равно, практически гарантированно в любой софтверной конторе using namespace либо вообще запрещен к использованию, либо имеет строгие рамки применения.
0
Эксперт функциональных языков программированияЭксперт Java
4485 / 2720 / 485
Регистрация: 28.04.2012
Сообщений: 8,585
04.04.2014, 10:33 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;
}
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
04.04.2014, 13:25  [ТС] 12
Ребят как я понял std - название библиотеки. В самой библиотеке конфликт имен не возможно. Если написать using namespace std; это не означает ли что используется конкретная библиотека с названием "std". Или я не прав?

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

Использование в одной программе 2 cout из разных библиотек приведет к конфликту. Если только каждый раз при использование не напомнит программе что именно этот cout который отвечает за хз что взят из библиотеки "Х". Если напомнит что объект взят из другой библиотеки каждый раз когда его используешь то не имеет значение ты используешь команду "using namespace std;" или "using std::cout;".
0
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
04.04.2014, 14:04 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);
}
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
04.04.2014, 18:51  [ТС] 14
DrOffset, Вы меня не поняли.

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

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

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

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

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

Вы пример привели из 2 объектов, с 2 пространств. Если добавит каждый объект таким же способом чтоб программа не зависла, то первая сотня строки будут только записи о пространствах и используемых объектах.
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
04.04.2014, 19:10 15
Цитата Сообщение от Altair42 Посмотреть сообщение
То есть пока пишу программу буду использовать пространство А по крайней мере десятки раз. А пространство Б лишь несколько раз
А вы на начало написания программы из нескольких тысяч строк можете предсказать интенсивность использования имен из конкретного неймспейса?

Не усложняйте на ровном месте, серьезно.
0
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
04.04.2014, 19:14 16
Цитата Сообщение от Altair42 Посмотреть сообщение
первая сотня строки будут только записи о пространствах и используемых объектах.
И зачем это делать? Я говорил о том, что в большинстве случаев достаточно использовать полное имя с включением пространства имен, как я показал в примере. Это нецелесообразно только в том случае, если вложенность пространств имен большая. Тогда можно сделать using namespace А::B::C; внутри того scope, в котором используются сущности из C. Либо воспользоваться псевдонимами для пространств имен
C++
1
namespace localC = A::B::C;
тоже настолько локально, насколько это позволяет задача. Пойнт в том, что глобальные включения в больших проектах могут непредсказуемо повлиять на код. Поэтому и не рекомендуется засорять текущее пространство имен лишними именами.

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

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

Добавлено через 14 минут
Вопрос не по теме. На каком языке написан Линукс? И на каком языке принимает команды?
0
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
04.04.2014, 20:28 18
Цитата Сообщение от Altair42 Посмотреть сообщение
На каком языке написан Линукс?
Ядро на С.
Цитата Сообщение от Altair42 Посмотреть сообщение
И на каком языке принимает команды?
Немножко неточная формулировка, но я думаю, что верно понял. Писать для Linux можно на любом языке (был бы инструментарий), системное ABI же соответствует C calling convention.
0
0 / 3 / 0
Регистрация: 28.06.2013
Сообщений: 359
04.04.2014, 20:35  [ТС] 19
Нуу я имел введу на каком языке к нему обращаться? Какой учит чтоб понять Линукс.

Я думал у него ядро на Ассемблер.
0
18822 / 9826 / 2401
Регистрация: 30.01.2014
Сообщений: 17,260
04.04.2014, 20:44 20
Цитата Сообщение от Altair42 Посмотреть сообщение
Я думал у него ядро на Ассемблер.
Ассемблер там есть. Но большая часть кода на С.
Цитата Сообщение от Altair42 Посмотреть сообщение
Нуу я имел введу на каком языке к нему обращаться? Какой учит чтоб понять Линукс.
Понять, в смысле исходники ядра? Если да, то С. Это основной язык.
Если просто программировать приложения для Linux, то подойдет и любой другой, который умеет делать вызовы С функций (это практически любой современный язык, главное чтобы он вообще под Linux существовал). В любой случае сейчас у многих языков обширные библиотеки, поэтому в зависимости от задачи может быть вообще не придется сталкиваться с системными вызовами.
0
04.04.2014, 20:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.04.2014, 20:44
Помогаю со студенческими работами здесь

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор *
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор...

iostream.h (непонятки с cout, endl )
дико извеняюсь, но.... если подключаю заголовочный файл (iostream.h), то его просто нет на моей...

Как такое обращение возможно к перечислению в классе cout << A<int>::v<<endl;?
не пойму логику. #include&lt;iostream&gt; using namespace std; template&lt; typename T&gt; class A { ...

cin cout
Как выводить через cin cout а не через printf. А то получается ерунда #include &lt;stdio.h&gt;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru