Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Не правильно отображается текст html в консоли - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Функция для перевыделения памяти для массива http://www.cyberforum.ru/cpp-beginners/thread1230811.html
Доброго времени суток, пишу шаблонный класс для массива и никак не могу разобраться с динамическим перевыделением памяти посредством new && delete. Вот как я попытался это сделать: template <class...
C++ Что такое nan? Собственно вопрос: что такое nan? Допустим v=2 #include<iostream> #include<cmath> using namespace std; int main() { setlocale(0,""); double E,m=pow(9.1*10,-31),c=(2.998*10,8),v,E1;... http://www.cyberforum.ru/cpp-beginners/thread1230808.html
C++ си++
Описать Структуру с именем STUDENT с полями: 1. NAME-фамилия и инициалы; 2.GROUP-номер группы; 3.SES-успеваемость(массив из 5 элементов).Написать программу, выполняющую следующие действия: -ввод...
Неверная кодировка при чтении из файла C++
Здравствуйте! Есть функция, которая читает символы из текстового файла. При чтении русской буквы выскакивает ошибка Expression: c >= -1 && c <= 255. В чем проблема, и как ее исправить? Вот...
C++ Отправка нажатий в не активное окно игры http://www.cyberforum.ru/cpp-beginners/thread1230773.html
пишу небольшую програмку. требуеться отправлять нажатия в не активное окно игры использую вот такой код конструктор для хранения данных struct KeyCom { int panel; int key; };
C++ Преобразование последовательности целых чисел по заданному правилу Задано последованность целых чисел B(2n), n≤200.Создать программу,которая превращает эту последованность за правилом:B(1)=B(2n),B(2)=B(2n-1),...,то пследованность остаётся без изменений,иначе... подробнее

Показать сообщение отдельно
Matvei
0 / 0 / 0
Регистрация: 19.07.2014
Сообщений: 5

Не правильно отображается текст html в консоли - C++

19.07.2014, 23:18. Просмотров 425. Ответов 10
Метки (Все метки)

Здравствуйте . Я решил написать мин программку для скачивания html страницы с некого сайта, и сразу же наткнулся на подводный камень)
И так: я подключаюсь к серверу сайта, отправляю GET запрос серверу(через socket) и получал ответ - с этим всё понятно. Проблема в том что ответ от сервера записывается в буфер char ,и буквы великого и могучего занимают сразу два слота в буфере так как они в формате юникода.
Вопрос: как правильно выводить этот буфер с текстом в окно консоль?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 int main(int argc, char* argv[]){
      setlocale(LC_ALL, "rus");
      char buff[1024*10];
      SOCKET my_sock;
      cout << "Старт тестового клиента." << endl;
 
      // Шаг 1  инициализация библиотеки Winsock
      if(WSAStartup(0x202, (WSADATA *)&buff[0])){
        cout << "Ошибка инициализации библиотеки Winsock №" << WSAGetLastError() << endl;
        return -1;
      }
 
      // Шаг 2  создание сокета
      my_sock = socket(AF_INET, SOCK_STREAM, 0);
      if (my_sock<0)
      {
          cout<<"Ошибка создания сокета №"<<WSAGetLastError()<<endl;
          WSACleanup();
          return -1;
      }
 
      // Шаг 3  установка соединения
      // заполнение структуры sockaddr_in – указание адреса и порта сервера
      sockaddr_in dest_addr;
      dest_addr.sin_family = AF_INET;
      dest_addr.sin_port = htons(80);
 
      // преобразование IP адреса из символьного в сетевой формат
      if (inet_addr("Адрес сайта") != INADDR_NONE){
          dest_addr.sin_addr.s_addr = inet_addr("Адрес сайта");
      }
      else{
          cout << "Ошибка Преобразования IP адреса" << endl;
          WSACleanup();
          return -1;
      }
 
      // адрес сервера получен – пытаемся установить соединение 
      if (connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr)))
      {
         cout << "Ошибка подключения №" << WSAGetLastError() << endl;
          return -1;
          WSACleanup();
      }
      cout << "Успешное подключение\n" << endl;
          
            // Шаг 4  передача сообщений
      char ffer[1024] = "GET / HTTP/1.1\r\nHost:<Хост сайта>\r\nCache-Control: no-cache\r\nAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 YaBrowser/14.5.1847.18825 Safari/537.36\r\nAccept-Language: ru,en;q=0.8\r\n\r\n";
      send(my_sock, &ffer[0], sizeof(ffer), 0);
 
      // Шаг 5  чтение сообщений
      size_t nsize;
          nsize = recv(my_sock, &buff[0], sizeof(buff)-1, 0);
      buff[nsize] = 0;
      cout << buff << endl;
 
      system("pause");
 
 
      closesocket(my_sock);
      WSACleanup();
      return NULL;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru