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

cout vs. std::cout

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

Студворк — интернет-сервис помощи студентам
всем доброго времени суток.
начал самостоятельно изучать 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++ 2005 Express Edition. Образ диска...

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

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

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

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

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

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

остальное не понял.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
04.04.2010, 17:47
Наглядный пример того, как НИКОГДА не нужно делать, но просто для разнообразия
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
 Аватар для Sundiver
0 / 0 / 0
Регистрация: 01.04.2010
Сообщений: 4
04.04.2010, 20:18  [ТС]
Цитата Сообщение от niXman Посмотреть сообщение

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

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

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru