Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 147, средняя оценка - 4.83
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
#1

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

07.03.2010, 19:01. Просмотров 23215. Ответов 21
Метки нет (Все метки)

C++
1
 std::cout << "Hello, world!" << std::endl;
а можно
C++
1
 cout << "Hello, world!" <<endl;
std пространство имен...
где про это можно почитать не нашел..
и почему оба варианта работают?
1
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.03.2010, 19:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вопрос про std:: (C++):

про std - C++
Доброго времени суток. Написал достаточно большую программу и тут понадобилось удалить файл.... прочитал в инете про функцию int remove....

Вопрос по std::list - C++
Не произойдёт ли здесь какая-нибудь ошибка после удаления элемента из списка? std::list&lt;int&gt; myList; std::list&lt;int&gt;::iterator iter; ...

Теоретический вопрос по std::map - C++
Всем привет. Подскажите пожалуйста как std::map резервирует память и как в памяти выглядят его элементы(условно). Те. понятно что вектор -...

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

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri - C++
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

STL std::set, std::pair, std::make_pair - C++
Я не знаю как описать тему в двух словах, поэтому не обращайте внимание на название темы. Собственно перейдем к нашим баранам: есть...

21
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.03.2010, 19:07 #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;
3
Krist_ALL
9 / 9 / 0
Регистрация: 01.02.2010
Сообщений: 317
07.03.2010, 19:13  [ТС] #3
дайте плз ссыль где прочитать про std
и зачем оно нужно чтоб написано было)
1
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.03.2010, 19:15 #4
Krist_ALL, http://en.wikipedia.org/wiki/C%2B%2B_Standard_Library
1
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
07.03.2010, 19:16 #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;
1
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.03.2010, 19:22 #6
Цитата Сообщение от al072 Посмотреть сообщение
Первый вариант кода будет работать в любом случае, так как std::cout это полный путь к стандартной функции библиотеки std
al072, вы не заставите BC3.1 воспринять строку
C++
1
std::cout << "Hello, world!" << std::endl;
Прочитайте мой пост
1
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
07.03.2010, 19:57 #7
Цитата Сообщение от M128K145 Посмотреть сообщение
al072, вы не заставите BC3.1 воспринять строку
C++
1
std::cout << "Hello, world!" << std::endl;
Прочитайте мой пост
Что такое ВСЗ?
без включения в заголовок пространства имен std, cout мы спокойно можем использовать с разрешением контекста! то есть std::cout.
1
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.03.2010, 20:08 #8
BC3.1 - Borland C++ 3.1 1992 года выпуска.
Вопрос про std::
al072, Вы считаете разумным продолжать эту дискуссию?
1
al072
15 / 15 / 0
Регистрация: 03.02.2010
Сообщений: 133
07.03.2010, 20:13 #9
Цитата Сообщение от M128K145 Посмотреть сообщение
BC3.1 - Borland C++ 3.1 1992 года выпуска.
Вложение 23496
al072, Вы считаете разумным продолжать эту дискуссию?
M128K145, я извиняюсь!!! просто мы говорим о разных средах.. я имею ввиду VC++(VS2008).

В таком случае дальнейшие обсуждения не имеют смысла..
1
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
07.03.2010, 20:16 #10
al072, а ведь стоило всего лишь внимательно прочитать

Цитата Сообщение от M128K145 Посмотреть сообщение
Раньше пространств имен не было, поэтому для того чтобы использовать потоки cin/cout необходимо было только подключить библиотеку iostream.h.
Но потом сделали пространства имен и во всех современных средах они поддерживаются, поэтому для использования содержимого пространства необходимо его подключить или обращаться к ним по имени пространства.
Поэтому первый вариант будет работать только в новых IDE, второй или в старых, или в новых, при условии, что будет использован один из этих кодов сразу после после подкючения библиотек
1
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,341
Завершенные тесты: 1
08.03.2010, 13:27 #11
раз темка открыта и свой вопрос задам.
вот на форуме вижу что обзывают ламерством вот это
Цитата Сообщение от Krist_ALL Посмотреть сообщение
cout << "Hello, world!" <<endl;
и гвоорят что надо так
Цитата Сообщение от Krist_ALL Посмотреть сообщение
std::cout << "Hello, world!" << std::endl;
вопрос:почему?
ведь легко вначале написать строк и никогда не писать лишнее,раз уж это только стиль программирования, то притензий никакой не должно быть.
1
Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 13:44 #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";
}
1
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,341
Завершенные тесты: 1
08.03.2010, 15:10 #13
Цитата Сообщение от Amarted Посмотреть сообщение
иногда даже локально:
вот это не понял
Цитата Сообщение от Amarted Посмотреть сообщение
Но на мой взгляд если у тебя идет например 10 строк cout то постоянно писать std::cout не очень то и удобно
вот вот...т.к. у меня всегда так я юзаю этот оператор

Цитата Сообщение от Amarted Посмотреть сообщение
что бы не засорять глобальную область имен
а по конкретнее
1
Amarted
157 / 19 / 2
Регистрация: 26.02.2010
Сообщений: 56
08.03.2010, 15:33 #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.
1
M128K145
Эксперт С++
8297 / 3517 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
08.03.2010, 15:56 #15
МедведЪ, смысл примерно тот же, что и в ООП:
Незачем наследоваться от класса, если нужен только один метод, проще создать объект этого класса и через него обращаться к методу. Иначе тянется куча всякого ненужного мусора, которая может только навредить
1
08.03.2010, 15:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2010, 15:56
Привет! Вот еще темы с ответами:

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Вопрос про char - C++
Пожалуйста обьясните доступным языком в чем разница между объявлениями, и какие когда лучше использовать char a; char *c; char b=new...

Вопрос про outtextxy() - C++
Если в графическом режиме выводить текст с помощью функции outtextxy() поверх другого текста, то новый текст сливается со старым. Прошу...

вопрос про указателей - C++
вот напр эта строка int *m=new int; это как я понял создается указатель?тогда что такое new int?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru