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

Вопрос про std:: - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 147, средняя оценка - 4.83
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 19:01     Вопрос про std:: #1
C++
1
 std::cout << "Hello, world!" << std::endl;
а можно
C++
1
 cout << "Hello, world!" <<endl;
std пространство имен...
где про это можно почитать не нашел..
и почему оба варианта работают?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.03.2010, 19:07     Вопрос про std:: #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Krist_ALL, скорее всего у вас или Borland Builder 6 или MS Visual C++ 6.0.
Раньше пространств имен не было, поэтому для того чтобы использовать потоки cin/cout необходимо было только подключить библиотеку iostream.h.
Но потом сделали пространства имен и во всех современных средах они поддерживаются, поэтому для использования содержимого пространства необходимо его подключить или обращаться к ним по имени пространства.
Поэтому первый вариант будет работать только в новых IDE, второй или в старых, или в новых, при условии. что будет использован один из этих кодов сразу после после подкючения библиотек
C++
1
using namespace std;
или
C++
1
using std::cout;
Krist_ALL
 Аватар для Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 19:13  [ТС]     Вопрос про std:: #3
дайте плз ссыль где прочитать про std
и зачем оно нужно чтоб написано было)
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.03.2010, 19:15     Вопрос про std:: #4
Krist_ALL, http://en.wikipedia.org/wiki/C%2B%2B_Standard_Library
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
07.03.2010, 19:16     Вопрос про std:: #5
Цитата Сообщение от Krist_ALL Посмотреть сообщение
C++
1
 std::cout << "Hello, world!" << std::endl;
а можно
C++
1
 cout << "Hello, world!" <<endl;
std пространство имен...
где про это можно почитать не нашел..
и почему оба варианта работают?
Почитать это можно практически в любой книге по С++.

Первый вариант кода будет работать в любом случае, так как std::cout это полный путь к стандартной функции библиотеки std. функция cout отвечает за вывод информации в консоль.

Второй вариант кода- будет работать и его можно будет использовать если в начале программы вместе с заголовочным файлом #include<iostream>, написать еще и использование контекста using std::cout- после обьявления этой строчки функцию cout, компилятор будет распознавать как будто было введено std::cout. проще всего включить в заголовок полное пространство имен std. следующим образом: using namespace std;
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.03.2010, 19:22     Вопрос про std:: #6
Цитата Сообщение от al072 Посмотреть сообщение
Первый вариант кода будет работать в любом случае, так как std::cout это полный путь к стандартной функции библиотеки std
al072, вы не заставите BC3.1 воспринять строку
C++
1
std::cout << "Hello, world!" << std::endl;
Прочитайте мой пост
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
07.03.2010, 19:57     Вопрос про std:: #7
Цитата Сообщение от M128K145 Посмотреть сообщение
al072, вы не заставите BC3.1 воспринять строку
C++
1
std::cout << "Hello, world!" << std::endl;
Прочитайте мой пост
Что такое ВСЗ?
без включения в заголовок пространства имен std, cout мы спокойно можем использовать с разрешением контекста! то есть std::cout.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.03.2010, 20:08     Вопрос про std:: #8
BC3.1 - Borland C++ 3.1 1992 года выпуска.
Вопрос про std::
al072, Вы считаете разумным продолжать эту дискуссию?
al072
14 / 14 / 0
Регистрация: 03.02.2010
Сообщений: 132
07.03.2010, 20:13     Вопрос про std:: #9
Цитата Сообщение от M128K145 Посмотреть сообщение
BC3.1 - Borland C++ 3.1 1992 года выпуска.
Вложение 23496
al072, Вы считаете разумным продолжать эту дискуссию?
M128K145, я извиняюсь!!! просто мы говорим о разных средах.. я имею ввиду VC++(VS2008).

В таком случае дальнейшие обсуждения не имеют смысла..
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
07.03.2010, 20:16     Вопрос про std:: #10
al072, а ведь стоило всего лишь внимательно прочитать

Цитата Сообщение от M128K145 Посмотреть сообщение
Раньше пространств имен не было, поэтому для того чтобы использовать потоки cin/cout необходимо было только подключить библиотеку iostream.h.
Но потом сделали пространства имен и во всех современных средах они поддерживаются, поэтому для использования содержимого пространства необходимо его подключить или обращаться к ним по имени пространства.
Поэтому первый вариант будет работать только в новых IDE, второй или в старых, или в новых, при условии, что будет использован один из этих кодов сразу после после подкючения библиотек
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
08.03.2010, 13:27     Вопрос про std:: #11
раз темка открыта и свой вопрос задам.
вот на форуме вижу что обзывают ламерством вот это
Цитата Сообщение от Krist_ALL Посмотреть сообщение
cout << "Hello, world!" <<endl;
и гвоорят что надо так
Цитата Сообщение от Krist_ALL Посмотреть сообщение
std::cout << "Hello, world!" << std::endl;
вопрос:почему?
ведь легко вначале написать строк и никогда не писать лишнее,раз уж это только стиль программирования, то притензий никакой не должно быть.
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 13:44     Вопрос про std:: #12
На самом деле пиши как тебе удобно, просто используют std::cout что бы не засорять глобальную область имен используя директиву using;
Но на мой взгляд если у тебя идет например 10 строк cout то постоянно писать std::cout не очень то и удобно, я в таких случаях просто использую оператор using иногда даже локально:

C++
1
2
3
4
5
6
void someFunc()
{
    using std::cout // cout видно только в текущей функции.
    cout<<"blabla";
    cout<<"blablabla";
}
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
08.03.2010, 15:10     Вопрос про std:: #13
Цитата Сообщение от Amarted Посмотреть сообщение
иногда даже локально:
вот это не понял
Цитата Сообщение от Amarted Посмотреть сообщение
Но на мой взгляд если у тебя идет например 10 строк cout то постоянно писать std::cout не очень то и удобно
вот вот...т.к. у меня всегда так я юзаю этот оператор

Цитата Сообщение от Amarted Посмотреть сообщение
что бы не засорять глобальную область имен
а по конкретнее
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 15:33     Вопрос про std:: #14
когда ти используешь директиву using namespace std;
все имена кторые есть в этом пространстве(std) становятся видимыми, и если у тебя в программе встретиться такоеже имя которое определено в пространстве имен std то это вызовет конфликт имен;
использовать локально, это я имелл в виду
C++
1
2
3
4
5
6
7
8
9
void someFunc()
{
        using std::cout // cout видно только в текущей функции.
        cout<<"blabla";
        cout<<"blablabla";
}
// А здесь за пределами функции, то есть вне блока { } 
// cout<<"blabla" не сработает нужно или писать 
// std::cout<<"blabla" или опять использовать using.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
08.03.2010, 15:56     Вопрос про std:: #15
МедведЪ, смысл примерно тот же, что и в ООП:
Незачем наследоваться от класса, если нужен только один метод, проще создать объект этого класса и через него обращаться к методу. Иначе тянется куча всякого ненужного мусора, которая может только навредить
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
08.03.2010, 18:41     Вопрос про std:: #16
Цитата Сообщение от M128K145 Посмотреть сообщение
Иначе тянется куча всякого ненужного мусора, которая может только навредить
а что за мусор?...

Добавлено через 1 минуту
хотя если код большой,в этот момент будет труднее,правильно думаю,M128K145?
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 20:42     Вопрос про std:: #17
Мусор это то что ты включаешь с помощью директивы using, но совсем не используешь в программе.
То есть помимо cout и cin в пространстве имён std, есть еще много чего не нужного в данном коде.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
08.03.2010, 20:43     Вопрос про std:: #18
Amarted, аа все понятно..тогда правильно мыслю....думаю в это в больших программах так надо...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2010, 20:59     Вопрос про std::
Еще ссылки по теме:

C++ Вопрос по std::list
C++ Теоретический вопрос по std::map
C++ про std

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

Или воспользуйтесь поиском по форуму:
Amarted
 Аватар для Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 20:59     Вопрос про std:: #19
Ну считается как правило хорошего тона использовать такой способ везде где это возможно;
Но всё равно, если даже тебе не удобно писать каждый раз std::cout допустим, то рпедпочтительнее использовать using std::cout; чем using namespace std;
Yandex
Объявления
08.03.2010, 20:59     Вопрос про std::
Ответ Создать тему
Опции темы

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