Необычные события iostream в C ++? - PullRequest
1 голос
/ 30 января 2012

У меня есть следующая программа, которая прекрасно компилируется и не содержит ошибок или предупреждений:

#include <iostream>
#include <SDL/SDL.h>
#include <SDL/SDL_opengl.h>
#include "classes.h"

int width = 0;
int height = 0;

int init(int width = 640, int height = 480, int bpp = 32) // needs to be the first  statement called in main()

{
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_SetVideoMode(width, height, bpp, SDL_OPENGL);
    SDL_WM_SetCaption("SpaceInvaders", NULL);
    glClearColor(0,0,0,0);
}

void setstates(int width = 640, int height = 480) // needs to be called when the    window is resized
{
    ::width = width;
    ::height = height;
    glViewport(0, 0, width, height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, width, 0, height, -1, 1);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

int main (int argc, char** argv)
{
    setstates();
    std::cout << ::width << std::endl;
    std::cout << ::height << std::endl;

    int a ;
    std::cin >> a;

    return 0;
}

Что мне интересно, так это когда я вызываю cout в главной функции и запускаю программу, консольПоявляется и ничего не отображается, когда я нажимаю букву и вводлю, программа возвращает 0, как если бы это было в операторе cin, но консоль даже не отображает нажатую букву.

Однако я получаю документ stdout.txt в каталоге скомпилированной программы, который, по-видимому, представляет собой информацию cout, отформатированную новой строкой, как в программе.

Поэтому мой вопрос в чем проблема?и почему это происходит, я никогда не испытывал этого раньше.

Спасибо, что уделили время заранее

1 Ответ

3 голосов
/ 30 января 2012

SDL перенаправляет ваш вывод, как указано в FAQ .

...