Неправильные и странные коды в C++

Решил научиться программировать на C++, нашёл пару сайтов и книг. Так вот в одной из книг (C++ для чайников, Стефан Р. Дэвис) я нашёл такой примечательный код:

#include <stdio.h>
#include <iostream.h>
int main(int nNumberofArgs, char* pszArgs[])
{
    int nNCelsius;
    cout << "Введите температуру по Цельсию: ";
    cin >> nNCelsius;
    int nNFactor;
    nNFactor = 212 - 32;
    int nFahrenheit;
    nFahrenheit = nNFactor * nNCelsius / 100 + 32;
    cout << "Температура по Фаренгейту: ";
    cout << nFahrenheit;
    return 0;

И вот в чём дело — в Visual Studio почти весь код напичкан ошибками, всё выделено. Пробовал исправить, вышло так:

#include <stdio.h>
#include <iostream.h>
int main(int nNumberofArgs, char* pszArgs[])
{
    setlocale(0, "");
    int nNCelsius, nNFactor;
    nNFactor = 212 - 32;
    cout << "Введите nNCelsius: ";
        cin >> nNCelsius;
    cout << "Введите nNFactor: "
        cin >> nNFactor;
    int nFahrenheit = nNCelsius + nNFactor;
    cout << "Температура по Фаренгейту: " << nFahrenheit << endl;
    system("pause");
    return 0;
}

Запутался в коде, в общем. Заглянул в пару мест на сайте и пытался всё сделать по образцу, всё равно не выходит.
Прошу объяснить, что да как.

В книжном варианте кода исправь на...

#include <cstdio>
#include <iostream>

using namespace std;

int main()
    {
    // код
    }

Malvin_Harris, в современном варианте C++ (начиная с какого стандарта — не помню, и лень копаться) существует два заголовочных файла stdio.h и cstdio. В первом, унаследованном от C, все сущности (имена функций, имена структур и пр.) находятся в глобальном пространстве имён, а во втором, который является обёрткой для первого, все сущности находятся в пространстве имён std. Для включения пространства имён std в глобальное пространство имён программы используется оператор using namespace std;, как показано в примере Slonopotam'а. При использовании заголовочного файла stdio.h этого делать не надо.

Заголовочный файл iostream.h был убран из стандарта (но встречается в старых книгах) и заменён на iostream, сущности в котором находятся в пространстве имён std. Поэтому в программе нужно обязательно указывать пространство имён при использовании этого заголовочного файла.

В твоей программе stdio.h/cstdio вообще не нужен. В ней используются только сущности, описанные в iostream.

Заголовочный файл iostream.h был убран из стандарта

Немного не верно. Он был до стандарта и уже в первый стандарт вошел как «iostream».

все сущности находятся в пространстве имён std.

Они там продублированы.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.