Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/49: Рейтинг темы: голосов - 49, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 4
1

cout vs. std::cout

04.04.2010, 03:36. Показов 10083. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
всем доброго времени суток.
начал самостоятельно изучать c++. скачал в сети много разныx умныx книжек.. обнаружил в примераx кода основное различие:
одни авторы объявляют пространство имён std и далее использую комманды cout, cin итд. совершенно нормально. другие авторы учат изначально объявлению std::cout, std::cin без объявления данного пространства имён заранее.
в чем смысл? заранее благодарен )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2010, 03:36
Ответы с готовыми решениями:

В чем разница std::cout и просто cout?
Ребят ,подскажите на простом языке для чайников . В чем разница std::cout и просто cout?

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++...

Операция std::cout для Объекта типа std::string
Кто детально объяснит почему не выводит ? Дает вот так "Отсутствует оператор "<<", соответствующий...

Что использовать, std::cout или просто using namespace std?
Приветствую! Сейчас учу С++, постигаю азы так сказать. В арсенале две книги - Джефф Кент, ...

11
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.04.2010, 03:55 2
Цитата Сообщение от Sundiver Посмотреть сообщение
одни авторы объявляют пространство имён std
C++
1
using namespace std; // называется - раскрытием пространства имен.
Цитата Сообщение от Sundiver Посмотреть сообщение
далее использую комманды cout, cin итд. совершенно нормально.
для учебных целей - да, нормально. но для крупных проектов, такое позволено делать, только внутри блока.

Цитата Сообщение от Sundiver Посмотреть сообщение
другие авторы учат изначально объявлению std::cout, std::cin
это единственный правильный способ, по двум причинам.
1. не приходится переживать о перекрытии/смешении функций/классов с другим, открытым пространством имен.
2. при использовании нескольких библиотек в проекте, указание пространства имен, позволяет четко понимать, чьи классы/методы используются.
2
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
04.04.2010, 12:16 3
Цитата Сообщение от niXman Посмотреть сообщение
для учебных целей - да, нормально. но для крупных проектов, такое позволено делать, только внутри блока.
т.к. если ты напишешь
C++
1
using namespace std;
в проекте будет много всякого,чего не используешь
0
10 / 10 / 2
Регистрация: 01.02.2010
Сообщений: 317
04.04.2010, 13:44 4
а я вот просто пишу cout и cin без объявления пространства имен. как так?
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.04.2010, 14:02 5
Krist_ALL, у тебя компилятор древний. или просто борланд
1
Эксперт JavaЭксперт С++
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
04.04.2010, 14:30 6
Цитата Сообщение от Sundiver Посмотреть сообщение
в чем смысл? заранее благодарен )
Весь смысл укладывается в два поста niXman'а:
Цитата Сообщение от niXman Посмотреть сообщение
1. не приходится переживать о перекрытии/смешении функций/классов с другим, открытым пространством имен.
2. при использовании нескольких библиотек в проекте, указание пространства имен, позволяет четко понимать, чьи классы/методы используются.
Цитата Сообщение от niXman Посмотреть сообщение
у тебя компилятор древний. или просто борланд
Вполне возможно, что это переизданная старая редакция книги, в которой исправлены некоторые ошибки, но код не перерабатывался, ведь пространства имен - это довольно молодое явление

Sundiver, а вообще эта тема не раз уже обсуждалась, на форуме можно найти много интересного по этому вопросу
0
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 4
04.04.2010, 16:21  [ТС] 7
т.е. этим пространством имён можно пользоваться более менее безопасно, если объявлять его только в каком-то определённом блоке или функции. ?! например в main?!
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.04.2010, 16:22 8
Sundiver, да, если не собираешься раскрывать еще какое-то пространство.
0
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 4
04.04.2010, 17:40  [ТС] 9
Цитата Сообщение от niXman Посмотреть сообщение
Sundiver, да, если не собираешься раскрывать еще какое-то пространство.

например, раскрываю пространство имён "уныйдядька" и наблюдаю там функцию cerr, т.е. этот умный дядька её перегрузил получается. и если мне нужно будет использовать её с обоиx пространств, то соответственно прописывать:

umnijdyadka::cerr;
&
std::cerr;
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.04.2010, 17:47 10
Цитата Сообщение от Sundiver Посмотреть сообщение
и наблюдаю там функцию cerr
это объект, типа std::ostream

остальное не понял.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12835 / 7571 / 1765
Регистрация: 25.07.2009
Сообщений: 13,968
04.04.2010, 17:47 11
Наглядный пример того, как НИКОГДА не нужно делать, но просто для разнообразия
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <string>
#include <cctype>
    
class Cout {
public:
    Cout() {}
    friend Cout& operator << (Cout& c, const std::string& s){
        for ( std::string::const_iterator i = s.begin(); i != s.end(); ++i )
            std::cout << (char)toupper(*i);
        return c;
    }
};
 
int main(){
    Cout cout;
    std::string s("abcdef");
    cout << s;
    return 0;
}
1
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 4
04.04.2010, 20:18  [ТС] 12
Цитата Сообщение от niXman Посмотреть сообщение

остальное не понял.

речь идёт о том, что если в другом пространстве имён имеется такой-же объэкт как и в пространстве std, то получается перегрузка и использовать объект в чистом виде без указания на пространство имён - опасно?!

Добавлено через 2 часа 22 минуты
easybudda, сапсибо, всё ясно) то что пытался выразить)
0
04.04.2010, 20:18
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2010, 20:18
Помогаю со студенческими работами здесь

Стандартный поток и STL (std::copy to std::cout)
#include &lt;iostream&gt; #include &lt;sstream&gt; #include &lt;algorithm&gt; #include &lt;functional&gt; #include...

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

Не работает std::cout || std::cin
#include &quot;Account.h&quot; #include &lt;string&gt; #include &lt;iostream&gt; using std::cout; Account ::...

Ошибка в std::cout<<std::endl
есть следующая задача: -создать класс множество целых чисел. перегрузить операторы для следующих...

Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит второй cout
Подскажите почему после первого cout программа не останавливается для ввода строки, а выводит...

Разница между fwrite, cout и cout.write
Привет. Пытаюсь вывести букву 'ф' в консоль Windows 7, используя кодировку UTF-8. Для этого...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Как работать с Kafka в Go (Golang)
bytestream 22.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки событий и интеграции микросервисов. Эта система, изначально. . .
Как использовать RabbitMQ в Go (Golang)
bytestream 22.01.2025
RabbitMQ представляет собой надежный и широко используемый брокер сообщений, который играет ключевую роль в построении современных распределенных систем и микросервисной архитектуры. В основе работы. . .
Как преобразовать список списков в простой список в Python
bytestream 22.01.2025
При работе с Python разработчики часто сталкиваются с необходимостью обработки сложных структур данных, среди которых особое место занимают вложенные списки. Эти структуры представляют собой списки,. . .
Что такое GUID / UUID и как их создать
bytestream 22.01.2025
В мире разработки программного обеспечения существует постоянная потребность в уникальной идентификации объектов, записей и ресурсов. Эта задача становится особенно актуальной в распределенных. . .
Как добавить пустую директорию в репозиторий Git
bytestream 22.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо сохранить пустую директорию в репозитории. Данная задача может показаться простой на первый. . .
Как валидировать адрес email в JavaScript
bytestream 22.01.2025
JavaScript, как основной язык веб-разработки, предоставляет разработчикам множество инструментов для реализации эффективной валидации email-адресов. От простых встроенных решений до сложных. . .
Как заменить все вхождения подстроки в JavaScript
bytestream 22.01.2025
Строки в JavaScript представляют собой неизменяемые последовательности символов, что делает их обработку особенно интересной с точки зрения оптимизации и выбора правильного подхода к решению задач. . . .
Управление версиями пакетов в Node.js. В чем разница между тильдой (~) и кареткой (^) в package.json
bytestream 22.01.2025
В современной разработке программного обеспечения управление версиями пакетов играет ключевую роль в обеспечении стабильности и надежности проектов. Node. js, как одна из самых популярных платформ для. . .
Аутентификация на сайте с помощью формы
bytestream 21.01.2025
В современном цифровом мире безопасная аутентификация становится краеугольным камнем защиты веб-приложений и пользовательских данных. Каждый день миллионы людей используют различные онлайн-сервисы,. . .
Как получить индекс в цикле for в Python
bytestream 21.01.2025
При работе с коллекциями данных в Python часто возникает необходимость не только получить доступ к элементам последовательности, но и знать их позицию в процессе итерации. Индексация в циклах. . .
Как определить адрес, из которого локальный репозиторий Git был клонирован
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемой частью рабочего процесса. При работе с Git разработчики часто сталкиваются с необходимостью. . .
Какая разница между операторами == и === в сравнениях в JavaScript
bytestream 21.01.2025
В мире веб-разработки JavaScript занимает особое место как динамический язык программирования, предоставляющий разработчикам широкий набор инструментов для создания интерактивных веб-приложений. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru