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

DevC не видит команд cout, cin - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибки при подключении tinyxml: Unexpected end of file while looking for precompiled header http://www.cyberforum.ru/cpp-beginners/thread1237947.html
Скачал tinyxml с офф сайта(проектом выходит) подключил файлы tinystr.h tinystr.cpp tinyxml.h tinyxml.cpp tinyxmlerror.cpp tinyxmlparser.cpp 4 ошибки появились, типа подключите в эти файлы stdafx.h ??), ну ок я по пробовал подключить другие ошибки вылазят, и я понял что подключение stdafx.h не решит проблему... Кто подскажет что тут не так Error 6 error C1010: unexpected end of file...
C++ Makefile dynamic library creation error Добрый день. Создал makefile со следующим содержанием: # Project PROJECT_NAME=StarXml EXECUTABLE=StarXml # Dirs TARGET_DIR=bin OBJECT_DIR=obj INCLUDE_ROOT_DIR=include INCLUDE_PROJ_DIR=$(INCLUDE_ROOT_DIR)/$(PROJECT_NAME) http://www.cyberforum.ru/cpp-beginners/thread1237926.html
Стоит ли вообще дальше изучать С++ или перейти на Java? C++
привет. многие начали изучать программирование с языка С++. поэтому я пошёл по этому же пути. начинал читать учебник Либерти, но потом бросил так как много опечаток. в итоге прочитал учебник Шилдта полностью и несколько глав из Лафоре. теперь думаю, то ли изучать что то дальше по С++ на уровне "продвинутого новичка" и т.д., или переходить на что то другое. просто смотрю вакансии в интернете....
C++ Ошибка при подключении заголовочного файла: "error LNK2019: unresolved external symbol"
Добрый день. Я что то не могу разобраться как работают эти заголовки на с++(вижуал студия). Создал Test.h В нём написал #pragma once #include <iostream> using namespace std;
C++ Пишем аллокатор http://www.cyberforum.ru/cpp-beginners/thread1237768.html
дабы не захламлять и так уже захламленную тему про перегрузку операторов создаю новую тему, собственно по поводу аллокаторов прям заинтересовался сам... написал простой аллокатор - обертку над new template <typename T> T* allocate(T* ptr, size_t new_size, size_t old_size = 0) { T* retval = new T; if (ptr) { memcpy(retval, ptr, old_size); delete ptr;
C++ Найти все совершенные числа от M до N Совершенные числа (Время: 1 сек. Память: 16 Мб ) Число называется совершенным, если оно равно сумме всех своих делителей, меньших его самого. Требуется найти все совершенные числа от M до N. Входные данные Входной файл INPUT.TXT содержит числа M и N, разделенные пробелом. (1 <= M <= N <= 5*1018) Выходные данные подробнее

Показать сообщение отдельно
gru74ik
Модератор
Эксперт CЭксперт С++
3925 / 1683 / 189
Регистрация: 20.02.2013
Сообщений: 4,744
Записей в блоге: 21
04.08.2014, 00:01     DevC не видит команд cout, cin
cout - это console output (консольный вывод), оператор работы с стандартным потоком вывода (в качестве такового чаще всего выступает монитор). Для того чтобы он работал, надо указать, что это тот самый cout, который описан в стандартной библиотеке как объект класса ostream. Для этого ты используешь так называемую операцию разрешения контекста (те самые идущие подряд два двоеточия) и три буквочки std. Либо директиву using.
Вот тут так и сделано:
C++
1
2
3
4
5
6
#include <iostream>
 
int main(int argc, char** argv) {
    std::cout << "Hello world!\n";
    return 0;
}
Можешь сам посмотреть операция разрешения контекста C++ и ещё директива using C++.

Добавлено через 32 минуты
Или вот у Страуструпа объяснение:
Кликните здесь для просмотра всего текста
Цитата Сообщение от Бьярне Страуструп
4.9.4. Область видимости
Объявление вводит имя в область видимости (scope); это значит, что имя можно
использовать лишь в ограниченной части программы. Для имени, объявленного
в теле функции (его часто называют локальным), область видимости простирается
от точки объявления до конца содержащего это объявление блока. Блоком
называется фрагмент кода, ограниченного с двух сторон фигурными скобками
(открывающей и закрывающей).
Имя называется глобальным, если оно объявлено вне функций, классов
(глава 10) и пространств имен (§8.2). Область видимости глобального имени
простирается от точки объявления до конца файла, содержащего это объявление.
Объявление имени внутри блока скрывает совпадающее имя, объявленное во внешнем
объемлющем блоке, или глобальное имя. Таким образом, внутри блока имя можно
переопределить с тем, чтобы оно ссылалось на новую сущность. По выходе из блока
имя восстанавливает свой прежний смысл. Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int х;          // глобальная переменная х 
void f() 
{ 
    int х;      // локальная х скрывает глобальную х 
    х = 1;      // присваивание локальной х 
    { 
        int х;  // скрывает первую локальную х 
        х = 2;  // присваивание второй локальной х 
    } 
    х = 3;      // присваивание первой локальной х 
} 
int* р = &х;    // взять адрес глобальной х
Сокрытие имен неизбежно в больших программах. В то же время,
программист может и не заметить, что какое-то имя оказалось скрыто. Из-за того, что
такие ошибки редки и нерегулярны, их трудно обнаруживать. Следовательно,
сокрытие имен желательно минимизировать. Хотите проблем — используйте i или х
в качестве глобальных имен, или в качестве локальных в функциях большого
размера.
Доступ к скрытому глобальному имени осуществляется с помощью операции ::
(операция разрешения области видимости — scope resolution operator). Например:
C++
1
2
3
4
5
6
7
8
int x; 
void f2() 
{ 
    int x=l; // скрывает глобальную х 
    ::x=2;   // присваивание глобальной х 
    x=2;     // присваивание локальной х
    //...
}
He существует способа обращения к скрытому локальному имени.
Область видимости имени начинается в точке объявления, точнее, сразу после
декларатора, но перед инициализирующим выражением. Из этого следует, что имя
можно использовать в качестве инициализатора самого себя. Например:
C++
1
2
3
4
5
6
int x; 
void f3() 
{ 
    int x = х;  // извращение: инициализируем х ее собственным 
                // (непроинициализированным) значением 
}
Это не запрещено, просто глупо. Хороший компилятор предупредит о попытке
чтения неинициализированной переменной (§5.9[9]).
В принципе, в блоке можно обращаться с помощью одного и того же имени
к разным переменным, даже не используя операции ::. Вот пример на эту тему:
C++
1
2
3
4
5
6
7
int x=11; 
void f4() 
{ 
    int у = x;  // используется глобальная х: у=11 
    int x = 22; 
    у = x;      // используется локальная х: у=22 
}
Считается, что имена аргументов функции объявлены в самом внешнем блоке,
относящемся к функции, так что следующий пример
C++
1
2
3
4
void f5(int x) 
{ 
    int x; // error (ошибка) 
}
компилируется с ошибкой, ибо имя х дважды определено в одной и той же
области видимости. Отнесение такой ситуации к ошибочным позволяет избегать
коварных ошибок.


P.S. Ещё можешь у него же ознакомиться с параграфом Пространства имён (§ 8.2 ).

Добавлено через 7 минут
P.P.S. Хотя, на мой взгляд, у Праты гораздо понятнее объяснено (см. Стивен Прата "Язык программирования С++. Лекции и упражнения", 2013, 6-е издание, глава 2, стр. 57)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru