Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[CGI, C++, console IO] Вывод двоичных данных на консоль. Проклятый '\n' (\x0A).

25K
28 марта 2007 года
poiuy
3 / / 28.03.2007
Здравствуйте. Пишу CGI-приложение на C++. Столкнулся с такой проблемой: когда выводишь на консоль символ \n, то вместо желаемого одного символа выводятся сразу два: \r\n. Поэтому если выводить текстовый файл "как есть", т.е. с использованием обоих символов \x0D\x0A, то в результате получается, что выводятся целых три символа: \x0D\x0D\x0A. Причём браузер (и любой текстовый редактор) воспринимает оба символа \x0D\x0D, в результате, появляются лишние пустые строки. Дело ещё в том, что я собираюсь использовать кодировку utf-8, а это значит, что могут появиться ошибки.
Пробовал использовать std::cout, printf. Пробовал также открывать файл "con" с помощью fopen или ofstream, но тогда результат вообще ни перенаправляется в файл (при указании ">" в командной строке), ни передаётся в браузер... Помогите, пожалуйста, решить проблему.
25K
28 марта 2007 года
poiuy
3 / / 28.03.2007
Ой, кажется, я решил проблему. Наткнулся в интернете на статью, повествующую о написании CGI-приложений на ассемблере. Там использовались виндовые функции GetStdHandle и WriteFile. Ну, я их и использовал...
 
Код:
#include "windows.h"

void main()
{
    char buf[] = "Content-Type:text/plain\r\n\r\nbazudulabra\r\nkjoxz\r\nbara\rbara\nzanazawaga";
    HANDLE stdoh = GetStdHandle(STD_OUTPUT_HANDLE);
    unsigned long written;
    WriteFile(stdoh, buf, sizeof(buf) - 1, &written, NULL);
}
Вроде бы работает.
Извините за беспокойство. Хотя... если есть более стандартное решение, буду рад послушать.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог