Виндовая конь-соль

Есть до соплей простой код на С++ (конвертит температуру из Фаренгейта в Цельсия):
//t-convert
#include “IOSTREAM.H” // Header for cout, cin Так неправильно!
#include IOSTREAM (IOSTREAM в вот таких <> скобках)
#include STDLIB.H (STDLIB в вот таких <> скобках )
using namespace std;

void main()
{
int fTemp; //Fahrenheit temp.
cout << "Input Fahrenheit temperature: "; cin >> fTemp;
int cTemp = (fTemp-32)*5/9; //Celsius temp.
cout << "Celsius temperature is: " << cTemp << " n"; system(“pause”);
}

Компилится. Из Вижуал Студии 6 исполняется с “Press to continue…” в конце. Напрямую в командной строке типа C:bla-blaMyProjectst-convert.exe тоже нормально.
Но при тупом двойном клике на ехе-шник в папке исполняет и схлопывает окно консоли.
system(“PAUSE”) или getch() в конце кода (и соответствующими хидерами #include) не помогают. Точнее они стопают выполнение сразу после исполнения строчки cin >> fTemp;
Гугель не помог.

UPD: помог разобраться в вопросе. Красным дописал как надо.

17 thoughts on “Виндовая конь-соль

  1. Есть в 6-й студии где-то опция проекта, которая оставляет консольку активной при исполнении экзешника. Точно сказать не могу, отошел от С++, но курить MSDN посоветую

  2. Спасибо!
    Но в древней 6.0 даже намека нет на таки пространные настройки проекта, а в новой 2008 – есть настройки, но нет искомого поля (к тому же она у меня еще и русская :( )
    Ушел курить MSDN.

  3. system(“pause”); в конце main() обычно помогал, если до него не происходила исключительная ситуация. ещё вариант – попробовать debug и release сборки – одинаково ведут?

  4. Не знаю, батенька.

    Вот, VS2005. Исходник твой:

    //t-convert
    #include [iostream> // Header for cout, cin
    #include [stdlib.h>
    
    using namespace std;
    
    void main()
    {
    int fTemp; //Fahrenheit temp.
    cout << "Input Fahrenheit temperature: ";
    cin >> fTemp;
    int cTemp = (fTemp-32)*5/9; //Celsius temp.
    cout << "Celsius temperature is: " << cTemp << " n";
    
    system("pause");
    
    }
    

    Собрал exe, ткнул дважды мышкой, ввёл число, получил "Press any key..."

  5. насколько я помню Си чувствителен к регистру, а посему system(“pause”); и system(“PAUSE”); не одно и то же.

  6. Скопировал у тебя в чистый консольный проект, исправил [ на < у хидеров.
    Закомментировал using… т.к. error C2871: ‘std’ : does not exist or is not a namespace. И без него работает.
    http://www.ljplus.ru/img4/g/a/gatazo/123.JPG – скриншот.
    Верхнее окошко консоли – запуск изз студи по Shift-F5. Требует ввод, просит кнопку, отдает результат, требует кнопку.
    Если паузу в коде закомментировать – работает как надо.

    Нижнее окошко – даблклик из папки. Требует ввод, просит кнопку, отдает результат и схлопывается.
    Если паузу в коде закомментировать – требует ввод, получает циферку, мгновенно все исполняет и схлопывает окно.

  7. Настораживает эта ошибка о пространстве имён… что-то нехорошо явно…
    > ‘std’ : does not exist or is not a namespace

    У исходного файла расширение .cpp или .c?

  8. Исправил. Ушла ошибка с using…
    Раскомментировал pause.
    И все заработало!
    Выводы:
    1. – чувааааак! :)
    2. Внимательнее нужно относится к синтаксису хидеров. Ибо ранее я юзал “iostream.h” и руками добавлял файлик заголовка в Header Files проекта. Тогда как с сама включает их в проект. В книжке об этом пишется (в части скобок и кавычек), а вот про .h ничего нет.
    Спасибо! :)

Leave a Reply