crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> плавающий баг вывода utf8 на stdout
lrx2
  опции профиля:
сообщение 17.2.2017, 15:04
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 12
Регистрация: 7.12.2011
Пользователь №: 3050

Спасибо сказали: 0 раз(а)




Репутация:   0  


Qt Creator 3.2.2 основан на Qt 5.3.2, компилятор minGW 4.9.1
Первый cout печатает, второй - нет.
Если убрать system("chcp"), то печатает все (с крякозябрами).
В чем прикол?

#include <QCoreApplication>

#include <iostream>
using namespace std;

#include <stdio.h>
#include <Windows.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    system("chcp 65001");
    cout<<"cout 0: rus text : русский  текст"<<endl;
    cout<<"cout 1: after rus text\n";

    return a.exec();
}



Другой код:
#include <QCoreApplication>
#include <iostream>
using namespace std;
#include <Windows.h>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    cout<<"default console outputCP: "<<GetConsoleOutputCP()<<"\n";
    cout<<"default console CP: "<<GetConsoleCP()<<"\n";
    cout.flush();

    SetConsoleCP(CP_UTF8);
    SetConsoleOutputCP(CP_UTF8);

    cout<<"new console outputCP: "<<GetConsoleOutputCP()<<"\n";
    cout<<"new  console CP: "<<GetConsoleCP()<<"\n";
    cout.flush();

    cout<<" введите русский текст: ";
    char s[100];
    cin>>s;
    cout<<" вы ввели: ["<<s<<"]";
    cout.flush();

    return a.exec();
}

На одном компе (win 7) после ввода строки и нажатия enter просто переходит на новую строчку и все,
на другом (win 8, minGW 4.8.2 - больше нет отличий):


-----
Я где-то память порвал в этом коде?..
Подскажите нубу.
Спасибо.

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.3.2017, 2:17