Перенаправление суда к консоли в окнах

Есть так много ответов для PHP и MySQL, но вот код для PHP и Oracle для предотвращения SQL-инъекций, а также регулярное использование драйверов oci8:

$conn = oci_connect($username, $password, $connection_string);
$stmt = oci_parse($conn, 'UPDATE table SET field = :xx WHERE ID = 123');
oci_bind_by_name($stmt, ':xx', $fieldval);
oci_execute($stmt);
38
задан Evan Teran 25 May 2011 в 20:54
поделиться

6 ответов

Я отправляю портативное решение в форме ответа, таким образом, она может быть принята. В основном я заменил cout streambuf тем, который реализован с помощью c файловый ввод-вывод, который действительно заканчивает тем, что был перенаправлен. Благодаря всем для Вашего входа.

class outbuf : public std::streambuf {
public:
    outbuf() {
        setp(0, 0);
    }

    virtual int_type overflow(int_type c = traits_type::eof()) {
        return fputc(c, stdout) == EOF ? traits_type::eof() : c;
    }
};

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
    // create the console
    if(AllocConsole()) {
        freopen("CONOUT$", "w", stdout);
        SetConsoleTitle("Debug Console");
        SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED);  
    }

    // set std::cout to use my custom streambuf
    outbuf ob;
    std::streambuf *sb = std::cout.rdbuf(&ob);

    // do some work here

    // make sure to restore the original so we don't get a crash on close!
    std::cout.rdbuf(sb);
    return 0;
}
19
ответ дан Evan Teran 27 November 2019 в 03:43
поделиться

Если консоль для отладки только, можно просто использовать OutputDebugStringA / OutputDebugStringW функции. Их вывод направил к Окну вывода в VS, если Вы находитесь в режиме отладки, иначе можно использовать DebugView для наблюдения его.

8
ответ дан Evan Teran 27 November 2019 в 03:43
поделиться

Библиотека iOS имеет функцию, которая позволяет Вам повторно синхронизировать C++ IO к тому, что использует стандарт C IO: iOS:: sync_with_stdio ().

здесь существует хорошее объяснение: http://dslweb.nwnexus.com/~ast/dload/guicon.htm .

0
ответ дан DarthPingu 27 November 2019 в 03:43
поделиться

Из того, что я могу сказать, Ваш код должен работать с VC 2005, если это - Ваше первое действие с консолью.

После проверки нескольких возможностей, Вы могли бы пытаться записать что-то перед выделением консоли. Запись в станд.:: суд или станд.:: wcout в той точке перестанет работать, и необходимо очистить флаги ошибки прежде, чем сделать далее вывод.

0
ответ дан Raymond Martineau 27 November 2019 в 03:43
поделиться

Raymond Martineau делает правильное замечание об этом являющийся 'первой вещью, которую Вы делаете'.

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

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

, Очевидно, этот вид материала не будет портативным, возможно даже через версии набора инструментальных средств, но это могло бы выручить Вас.

После Вашего AllocConsole, ступите полностью вниз в следующий вывод суда и узнайте, куда это идет и почему.

0
ответ дан Will Dean 27 November 2019 в 03:43
поделиться

Я не уверен, что понимаю проблему полностью, но если Вы хотите быть в состоянии просто выложить данные к консоли для диагностической цели.. почему не делают Вы испытываете Систему:: Диагностика:: Процесс:: Выполнить () метод или некоторый метод в том пространстве имен??

Извинения заранее, если это было не важно

-1
ответ дан Perpetualcoder 27 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: