Como eu uso “cin” e “cout” em C ++ com o TextMate?

1

Eu sou novo em C ++ e TextMate, e estou me deparando com um problema. Quando executo meus "programas" extremamente básicos no TextMate usando C ++, ele ignora completamente a instrução "cout > >" e apenas ignora ou insere o valor máximo de dados para o tipo básico que usei.

O que está acontecendo e como posso pará-lo?

O código-fonte é o seguinte:

#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;
}

… e a saída, independentemente de eu tentar ou não colocar um número, é:

enter the weight in stone0stone = 0 pounds.

    
por Jon Valentine 06.11.2011 / 14:49

1 resposta

4

Você precisa executar o arquivo compilado a partir de um Terminal. Abra Aplicações »Utilitários» Terminal.app , use cd para chegar ao diretório em que você escreveu o arquivo e compile-o.

No caso mais fácil, isso é:

g++ test.cpp

Em seguida, execute o programa com:

./a.out

Observe que isso funciona apenas para arquivos únicos, não para projetos inteiros. Mas, dado o escopo do seu problema, isso vai longe demais. Você acabará aprendendo sobre compilação avançada e "makefiles" em breve.

Por que isso, mesmo?

O problema é que o TextMate não espera por nenhuma entrada. Isso ocorre porque não é possível ler a entrada sem nenhuma biblioteca adicional que precise interagir com o sistema. Esta entrada do blog TextMate sobre a entrada interativa explica mais:

Prior to r1509 TextMate had a very neat feature: you could run (⌘R) a piece of C, Ruby, Python, Shell Script, etc. and if the code (directly or indirectly) read from its standard input then a dialog would be shown prompting the user for input.

Para sistemas anteriores ao Snow Leopard (10.6), uma correção foi possível. O TextMate 2 é supostamente capaz de fazer isso de novo, mas quem sabe quando será lançado.

    
por 06.11.2011 / 15:56

Tags