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

Unicode, UTF-8 и ANSI в одном консольном приложении. Можно ли "на лету" конвертировать массив строк? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Другой рандом http://www.cyberforum.ru/cpp-beginners/thread709528.html
Есть некоторое беззнаковое целое N, нужна рандомная последовательность не повторяющихся беззнаковых целых меньше N. Длина последовательности не превышает N, но может быть меньше N, функция должна...
C++ Написать функцию, находящую сумму цифр целого числа Написать функцию SumDigit(N), находящую сумму цифр целого числа N (N - входной параметр). При вводе N реализовать проверку на корректность исходных данных (N > 0). http://www.cyberforum.ru/cpp-beginners/thread709484.html
Оператор цикла. Вывести таблицу степеней двойки от нулевой до десятой C++
Задание выполните, используя все три оператора цикла (т.е. вывод результатов на экран у Вас будет осуществляться трижды с коментарием о названии оператора цикла). Написать программу, которая...
C++ Динамическое программирование. Определить оптимальную загрузку самолетов с грузоподъёмностью от G до 1,3G
Помогите решить задачу на динамич. программирование: Самолет имеет максимальную грузоподъемность G(m). Предметы, загружаемые в самолет, имеют различные веса и стоимости: wi(m), Сi (руб.)...
C++ Объединить массивы в один, включив второй между пятым и шестым элементами http://www.cyberforum.ru/cpp-beginners/thread709420.html
Ввести с клавиатуры два одномерных массива содержащих 10 и 5 элементов. Объединить их в один массив, включив второй между пятым и шестым элементами.На экран вывести исходные массивы сформированные в...
C++ Запрет ввода символов в консоли моя консольная программа имеет очень много вводов от пользователя, через контекстное меню (нажмите 1 для того, 2 для другого) чтоб не делать и не зацикливать каждый ввод в коде, возможно ли... подробнее

Показать сообщение отдельно
Excogit8er
2 / 2 / 0
Регистрация: 23.10.2012
Сообщений: 66
26.11.2012, 19:34  [ТС]
Цитата Сообщение от alsav22 Посмотреть сообщение
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
#include <iostream>
#include <fstream>
#include <Windows.h>
using namespace std;
 
int main()
{
    setlocale(0, ".1251"); //включили кодировку
    //SetConsoleCP (1251); 
    //SetConsoleOutputCP (1251); // или так.
    
    char buff[500];
    wchar_t wbuff[500];
 
    ifstream f("upload.txt");
    
    f.getline(buff, 500); // в буффер char из файла UTF-8.
    
    MultiByteToWideChar(CP_UTF8, 0, buff, 500, wbuff, 500); //из буфера char в буфер wchar_t .
    wcout.imbue(locale("rus_rus.866")); //включаем другую кодировку.
    //setlocale(0, "rus_rus.866"); // или так.
    wcout << wbuff << endl; // выводим содержимое буфера wchar_t
    
    wcout.imbue(locale("rus_rus.866")); //включаем другую кодировку.
    
    system("pause");
    return 0;
}
Красиво, что сказать. Thanx! Причем все просто и ясно, кроме одного момента:

wcout.imbue(locale("rus_rus.866")); //включаем другую кодировку.

А для чего нужна это строка? Ну, т.е. понятно, что включаем другую кодировку, но почему не сразу эту:

setlocale(0, ".1251"); // вернули кодировку.

И ещё: MultiByteToWideChar работает в консольных приложениях без проблем? Я видел её упоминание уже, но думал, что это только для "оконных" вариантов.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru