Нет вывода на консоль cout - PullRequest
6 голосов
/ 04 января 2011

Доброе утро,

У меня проблема с Eclipse IDE для разработчиков на C / C ++.

Я пишу небольшой инструмент для преобразования строк.Во время тестирования в какой-то момент Eclipse остановился, чтобы выдать консольный вывод .Например:
cout<<"test";
не отображается.

Но это не везде, где ... другой пример:

// File path as argument
int main(int argc, char* argv[]) {
if (argc != 2) {
    cout
            << "ERROR: Wrong amount of arguments! Only one allowed...\n";
    cout << "\n" << "Programm closed...\n\n";
    exit(1);
}

CommandConverter a(argv[1]);
cout<<"test";
a.getCommandsFromCSV();
cout<<"test2";

return 0;
}

Сообщение об ошибке отображается правильно, еслиаргумент отсутствует.Но если аргумент есть, и программа продолжает тестовые результаты:

cout << "test"; <br>cout << "test2"; </p>

являютсяне отображается ...
Мне не хватает чего-то очевидного?

Заранее спасибо!

Ответы [ 7 ]

11 голосов
/ 04 января 2011

Вам нужно завершить выходные строки новой строкой, например: `cout <<" test \ n "` `.Причина в том, что стандартный вывод буферизуется, а буфер сбрасывается на новой строке.Вероятно, существует способ очистки буфера Cout без вывода новой строки, но я не знаю его наизусть.Возможно, включает в себя доступ к базовому потоку буфера (через метод rdbuf). </p>

3 голосов
/ 21 августа 2011

Для меня установка 32-битных версий Eclipse (Indigo 3.7) и 32-битной Java JDK / JRE не работала.Я использую гораздо более быстрое решение из Eclipse CDT / Пользователь / FAQ :

Цитата из Eclipse CDT / Пользователь / FAQ - Консоль Eclipse не показывает вывод в Windows :

Консоль Eclipse не отображает выходные данные в Windows. В Eclipse CDT в Windows стандартный вывод выполняемой или отлаживаемой программы полностью буферизуется, поскольку он подключен не к консоли Windwos, а ктруба.Смотрите ошибку 173732 для более подробной информации.Либо добавляйте вызовы fflush после каждого printf, либо добавляйте следующие строки в начале основной функции:

setvbuf(stdout, NULL, _IONBF, 0); 
setvbuf(stderr, NULL, _IONBF, 0);
1 голос
/ 07 января 2011

У меня была похожая проблема. В моем случае программа выдаст вывод, если будет запущена из командной строки, но не из консоли Eclipse. Решением было использование 32-битной версии Eclipse, а не 64-битной.

Я читал, что это ошибка. Может быть, не та же проблема.

0 голосов
/ 10 июля 2014

Привет после некоторой подобной борьбы я понял, что первый элемент переменной PATH среды свойств проекта должен быть "C: \ MinGW \ bin;"В противном случае может использоваться неправильная версия, особенно если вы используете другой компилятор.

0 голосов
/ 02 февраля 2014

Это происходит, когда вы отлаживаете свой код и не видите вывод до последнего. используйте

cout<<"what ever overloads"<< flush;

для немедленного просмотра вывода на стандартный вывод (консоль)

0 голосов
/ 07 декабря 2011

Я также искал именно эту информацию, когда нашел ее на веб-сайте Microsoft http://support.microsoft.com/kb/94227

Я думаю, что простой метод - использовать std :: flush, когда вы хотите принудительно очистить внутренний буфер, который использует cout

*std::cout << ... << std::flush;*
0 голосов
/ 12 июля 2011

попробуйте вывести пробел в начале каждой строки

cout << "" << ..... </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...