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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 97, средняя оценка - 4.92
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
#1

Возникает ошибка с using namespace std; - C++

14.05.2010, 00:16. Просмотров 13291. Ответов 17
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
#include "stdio.h"
#include "string.h"
#include "math.h"
#include "stdlib.h"
#include "stdafx.h"
#include "iostream.h"
using namespace std; //здесь ошибка
error C2871: 'std' : does not exist or is not a namespace

Microsoft VC++ 6.0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2010, 00:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Возникает ошибка с using namespace std; (C++):

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

Зачем часто писать std::, если можно один раз using namespace std? - C++
зачем часто писать std:: если можно один раз using namespace std?

Пространство имен - namespace std или std:: - C++
В каких случая лучше писать (std::cout) или просто прописать (namespace std) и почему ?

using namespace std; - C++
Здравствуйте. Я заметил, что многие программисты стараются избегать этой строчки в своих программах. С чем это связанно? И еще...

std:: vs namespace - C++
Тема не для холивара, объясните пожалуйста чем лучше std:: а не using namespace std ? Без namespace std, возникает такая ошибка, но...

using namespace std - C++
Обьясните пожалуйста понятным языком, что такое пространство имен, и зачем нужна эта команда или std::

17
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
14.05.2010, 00:24 #2
вы должные включить заголовки, которые чтонибудь туда добавят, например #include <vector> #include <iostream>
0
AKE
11 / 11 / 0
Регистрация: 09.05.2010
Сообщений: 384
14.05.2010, 00:27  [ТС] #3
alex_x_x
А мне не нужно ничего туда добавлять...
Ошибка с потоковыми файлами...
0
Alexandoros
228 / 66 / 4
Регистрация: 02.06.2009
Сообщений: 280
14.05.2010, 12:35 #4
.h убери в iostream
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
14.05.2010, 21:22 #5
AKE, в зависимости от того как вы создавали проект, вам может не понадобится std;
MS VC++ 6 позволяет как использовать, так и не использовать std
0
Evg
Эксперт CАвтор FAQ
18032 / 6264 / 427
Регистрация: 30.03.2009
Сообщений: 17,220
Записей в блоге: 28
15.05.2010, 08:47 #6
Цитата Сообщение от AKE Посмотреть сообщение
error C2871: 'std' : does not exist or is not a namespace
namespace std появилось только в более поздних версиях стандарта Си++ и предназначен для того, чтобы втащить в него всё то, что описано в стандарте Си++ (чтобы проще было отделять мух от котлет). А в старых версиях стандарта (и, соответственно, в старых версиях компиляторах) этого namespace'а не было вообще.

К тому же раньше все заголовочные файлы от стандартных библиотек Си++ имели расширение .h: т.е. нужно было писать, например, #include <iostream.h>. В новых стандартах вся стандартная поддержка языка Си++ описана в заголовочных файлах без расширений: т.е. теперь надо писать #include <iostream>, но потом добавлять using namespace std; (либо ко всем глобалам обращаться через std, типа std::cout). Большинство современных компиляторов для совместимости поддерживают в том числе и старый вариант. Но в старых компиляторах нового варианта нет (потому что в те времена его ещё не изобрели).

Поэтому в твоём случае нужно просто удалить строку "using namespace std;" (поскольку ты использовал файл с расширением .h). Либо все подключаемые файлы стандартной библиотеки Си++ должны быть без .h (в твоём случае вместо iostream.h должно быть iostream)
2
-=ЮрА=-
Заблокирован
Автор FAQ
05.01.2012, 23:17 #7
Evg, чисто для себя хочу узнать - здесь на форуме часто вижу std::cout и т.д.(и все с пеной у рта утверждают что без std:: не по стандарту)
В случае если использую только функции std;(обычная консоль) логичней и лаконичней для кода записать using namespace std; под хедерами и не загромождать код std:: или я не прав???
0
niXman
Эксперт С++
3138 / 1450 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
05.01.2012, 23:37 #8
-=ЮрА=-, раскрытие пространства имен, весьма опасная привычка. это годится для хеловордов, или же для программ не использующих ничего кроме стандартной библиотеки.
0
Evg
Эксперт CАвтор FAQ
18032 / 6264 / 427
Регистрация: 30.03.2009
Сообщений: 17,220
Записей в блоге: 28
06.01.2012, 00:28 #9
-=ЮрА=-, ну, например, ты можешь написать проект с 100500 функциями и называть их "a", "b", "c", ... - это будет по стандарту, но затруднит тебе жизнь. С std:: то же самое. Если это "домашняя" программа на два экрана - то проще using использовать, в противном случае лучше std::. Да и вообще лучше заранее приучать себя к тому, что является "правильным" в случаях, когда большой проект пишут несколько людей
1
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
06.01.2012, 00:45 #10
AKE, дело в том что написав
include "iostream.h" Вы уже подключили iostream с указанием что потоки cin, cout а также манипуляторы вроде endl принадлежат пространству имён std, тем не менее хотя строка
C++
1
using namespace std;
в вашем случае пользы не принесёт, проект и с ней должен нормально компилироваться, что и происходит в minigw, но почему-то не происходит в vs 6.0 (сам вот тоже проверил из интереса).
Но если подключить iostream в виде
C++
1
#include <iostream>
то тогда конфликтов у vs с пространствами имён не возникает так что либо пишите так либо не пишите using namespace std раз уж таким образом подключили нужные вам библиотеки.
0
Evg
Эксперт CАвтор FAQ
18032 / 6264 / 427
Регистрация: 30.03.2009
Сообщений: 17,220
Записей в блоге: 28
06.01.2012, 01:01 #11
Для полноты картину ещё и сюда ссылку закину: include <?> для cout
0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
09.01.2012, 14:52 #12
вообще это вопрос холивара, а не языка
0
Alejo
0 / 0 / 0
Регистрация: 26.09.2012
Сообщений: 38
11.11.2012, 23:38 #13
Цитата Сообщение от Evg Посмотреть сообщение
-=ЮрА=-, ну, например, ты можешь написать проект с 100500 функциями и называть их "a", "b", "c", ... - это будет по стандарту, но затруднит тебе жизнь. С std:: то же самое. Если это "домашняя" программа на два экрана - то проще using использовать, в противном случае лучше std::. Да и вообще лучше заранее приучать себя к тому, что является "правильным" в случаях, когда большой проект пишут несколько людей
Можно пример (желательно для новичка) в котором using namespace std; может повредить программе ?
0
alex_x_x
бжни
2449 / 1654 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.11.2012, 23:56 #14
Цитата Сообщение от Alejo Посмотреть сообщение
Можно пример (желательно для новичка) в котором using namespace std; может повредить программе ?
LinkedList list;
0
Croessmah
Эксперт CЭксперт С++
13514 / 7672 / 866
Регистрация: 27.09.2012
Сообщений: 18,888
Записей в блоге: 3
Завершенные тесты: 1
12.11.2012, 00:01 #15
Цитата Сообщение от Alejo Посмотреть сообщение
может повредить программе ?
как вариант:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
 
using namespace std;
 
bool nothrow;
int main(){
    nothrow=true;
    std::cin.get();
    return 0;
}
0
12.11.2012, 00:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2012, 00:01
Привет! Вот еще темы с ответами:

namespace std - C++
Добрый день. Вычитал что могу использовать любой namespace. Но в другом месте написано что если не использовать std, то не сможет...

Using namespace std - C++
В чем отличие, если один cout (или что-то другое) будет в std, а другой stdd, для чего вообще using namespace? Уже везде где только можно...

using namespace std - C++
using namespace std; скажите плиз что означает ета строка и для чего она нужна?

Использование using namespace std; - C++
Я где-то слышал что использование такой диррективы на корню убивает пространство имен, но ведь только в boost и stl есть похожие классы,...


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

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

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