1

Я новичок в C++ и TextMate, и я столкнулся с проблемой. Когда я запускаю свои чрезвычайно простые "программы" в TextMate с использованием C++, он полностью игнорирует оператор «cout >>» и просто либо игнорирует его, либо вводит максимальное значение данных для базового типа, который я использовал.

Что происходит и как я могу это остановить?

Исходный код выглядит следующим образом:

#include <iostream>
int stonetolb(int);
int main() {
    using namespace std;
    int stone;
    cout << "enter the weight in stone";
    cin >> stone;
    int pounds = stonetolb(stone);
    cout << stone << "stone = ";
    cout << pounds <<" pounds.";
    return 0;
}

int stonetolb(int sts) {
    return 14 * sts;
}

… И результат, независимо от того, пытаюсь ли я даже указать число:

введите вес в stone0stone = 0 фунтов.

1 ответ1

4

Вам нужно запустить скомпилированный файл из терминала. Откройте Приложения »Утилиты» Terminal.app, используйте cd чтобы перейти в каталог, в который вы записали файл, и скомпилировать его.

В простейшем случае это:

g++ test.cpp

Затем запустите программу с:

./a.out

Обратите внимание, что это работает только для отдельных файлов, а не для целых проектов. Но учитывая масштаб вашей проблемы, это заходит слишком далеко. Вскоре вы узнаете о продвинутой компиляции и «make-файлах».


Почему это даже?

Проблема в том, что TextMate не ждет ввода. Это потому, что он не может читать ввод без какой-либо дополнительной библиотеки, которая должна взаимодействовать с системой. Эта запись в блоге TextMate об интерактивном вводе объясняет больше:

До r1509 TextMate имел очень удобную функцию: вы могли запускать (⌘R) часть C, Ruby, Python, Shell Script и т.д., И если код (прямо или косвенно) считывался из стандартного ввода, тогда диалог показано приглашение пользователя для ввода.

Для систем до Snow Leopard (10.6) исправление было возможно. Предполагается, что TextMate 2 сможет сделать это снова, но кто знает, когда он выйдет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .