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

Кодировки, вывод/ввод на консоль и в файл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка массива объектов класса http://www.cyberforum.ru/cpp-beginners/thread861002.html
Пишу программу в которой есть массив объектов и методы которые его сортируют, но после сортировки ничего не выводится, а просто чистое консольное окно, помогите разобраться TMagnitafon.h #pragma once #include "string.h" class TMagnitafon { public: char pType; char pFirma;
C++ Запись кириллицы в строку из консоли Столкнулся с такой проблемой: если я пытаюсь заполнить строку из консоли, то потом из этой строки на экран выводятся кракозябры. Подскажите, пожалуйста, как сделать, чтобы все было нормально? int _tmain(int argc, _TCHAR* argv) { setlocale (LC_ALL,"rus"); string str; char tmp; cout<<"Введите, что вы хотели бы вывести на экран: "; getline(cin,str); cout<<str<<endl; system... http://www.cyberforum.ru/cpp-beginners/thread860976.html
Наибольшее расстояние между словами в файле C++
Полный текст задачи: Дан файл, содержащий текст на русском языке и некоторые два слова. Определить, сколько раз они встречаются в тексте и найти наибольшее расстояние между этими словами.(сколько слов между ними). Добавлено через 8 минут #include<fstream> #include<iostream> #include<string> #include<conio.h> #include<stdio.h> #include <sstream> #include <locale.h>
C++ Считывание из файла
Всем привет! Есть вот такая проблема: при считывании данных из файла в объект ниоткуда берутся лишние данные. В чем может быть проблема? Вот пример файла: 1 1 1 2 2 2 А вот что получается когда считываю файл: 1 1 1 2 2 2 2 2 void output(Toys &T) { ifstream in("1.txt");
C++ в чем ошибка? http://www.cyberforum.ru/cpp-beginners/thread860967.html
Дано целое позитивное число n. Составить алгоритм вычисления суммы В чем ошибка в коде?#include <iostream> #include <conio.h> #include <math.h> #include <locale.h> using namespace std; //главная функция программы, с нее начинается выполнение int main()
C++ Задание на создание классов Дорогие коллеги! Помогите новичку разобраться с этим заданием! Задание на создание классов Данное задание предполагает создать базовый класс фигуры, указанный в задании класс и в нем реализовать заданную функцию. Приложение создается с графическим интерфейсом и реализует создание нескольких объектов заданного класса и тестирование заданной функции. Нужно: Разработать класс сектора Sector и... подробнее

Показать сообщение отдельно
DiffEreD
1427 / 764 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2

Кодировки, вывод/ввод на консоль и в файл - C++

10.05.2013, 21:23. Просмотров 2208. Ответов 1
Метки (Все метки)

Помогите разобраться с кодировками, а то я в этом вопросе не очень разбираюсь. Не получается одновременно сделать правильный ввод и вывод в одной программе, все известные мне методы я уже перепробовал. Вот код:
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
 
int main ()
{
    //SetConsoleCP (1251); SetConsoleOutputCP (1251); //строки wstring вообще не выводит
    setlocale (0, "Russian");
    //std::locale::global(std::locale(""));
    
    //std::locale cp1251_locale("ru_RU.CP1251"); //выбрасывает исключения
    //std::locale::global(cp1251_locale);
    
    std::ifstream ifs_UTF8_BOM("D:/file_UTF8_BOM.txt");
    std::ifstream ifs_UTF8("D:/file_UTF8.txt");
    std::ifstream ifs_ANSI("D:/file_ANSI.txt");
    
    std::wifstream wifs_UTF8_BOM("D:/file_UTF8_BOM.txt");
    std::wifstream wifs_UTF8("D:/file_UTF8.txt");
    std::wifstream wifs_ANSI("D:/file_ANSI.txt");
    
    std::string str_UTF8_BOM;
    std::string str_UTF8;
    std::string str_ANSI;
    
    std::wstring wstr_UTF8_BOM;
    std::wstring wstr_UTF8;
    std::wstring wstr_ANSI;
    
    //###################################################
    
    std::getline(ifs_UTF8_BOM, str_UTF8_BOM);
    std::getline(ifs_UTF8, str_UTF8);
    std::getline(ifs_ANSI, str_ANSI);
    
    std::getline(wifs_UTF8_BOM, wstr_UTF8_BOM);
    std::getline(wifs_UTF8, wstr_UTF8);
    std::getline(wifs_ANSI, wstr_ANSI);
    
    std::cout<<"Вывод str_UTF8_BOM:\t"<<str_UTF8_BOM<<std::endl;
    std::cout<<"Вывод str_UTF8:\t\t"<<str_UTF8<<std::endl;
    std::cout<<"Вывод str_ANSI:\t\t"<<str_ANSI<<std::endl;
    
    std::cout<<std::endl;
    
    std::wcout<<"Вывод wstr_UTF8_BOM:\t"<<wstr_UTF8_BOM<<std::endl;
    std::wcout<<"Вывод wstr_UTF8:\t"<<wstr_UTF8<<std::endl;
    std::wcout<<"Вывод wstr_ANSI:\t"<<wstr_ANSI<<std::endl;
    
    //###################################################
    
    std::string str;
    std::wstring wstr;
    std::cout<<"\n\nРучной ввод:\n";
    std::cout<<"string:-> "; std::getline(std::cin, str);
    std::cout<<"wstring:-> "; std::getline(std::wcin, wstr);
    std::cout<<"string: "<<str<<std::endl;
    std::wcout<<"wstring: "<<wstr<<std::endl;
    
    //###################################################
    
    std::ofstream ofs("D:/results.txt", std::ios::app);
    ofs<<"\n#######################################################\n\n";
    
    ofs<<"Вывод str_UTF8_BOM:\t"<<str_UTF8_BOM<<std::endl;
    ofs<<"Вывод str_UTF8:\t\t"<<str_UTF8<<std::endl;
    ofs<<"Вывод str_ANSI:\t\t"<<str_ANSI<<std::endl;
    
    ofs<<std::endl;
    
    ofs.close();
    std::wofstream wofs("D:/results.txt", std::ios::app);
    
    wofs<<"Вывод wstr_UTF8_BOM:\t"<<wstr_UTF8_BOM<<std::endl;
    wofs<<"Вывод wstr_UTF8:\t"<<wstr_UTF8<<std::endl;
    wofs<<"Вывод wstr_ANSI:\t"<<wstr_ANSI<<std::endl;
    
    std::cout<<std::endl;
    return 0;
}
Результат вывода в файл и на консоль (файл получается в кодировке ANSI):
Код
ВЫВОД В ФАЙЛ
Вывод str_UTF8_BOM:	п»їР*СѓСЃСЃРєРё English Українська
Вывод str_UTF8:		Р*СѓСЃСЃРєРё English Українська
Вывод str_ANSI:		Русский English Українська

Вывод wstr_UTF8_BOM:	п»їР*СѓСЃСЃРєРё English Українська
Вывод wstr_UTF8:	Р*СѓСЃСЃРєРё English Українська
Вывод wstr_ANSI:	Русский English Українська
Знаю, что в С++11 появилась такая штука как codecvt, но как ею пользоваться пока не понял. Буду рад за любые примеры и ссылки.
P.S. OS: Windows 7, компилятор: MinGW 4.7.3 от nixman, IDE: NetBeans IDE 7.3, кодировка в проекте windows-1251, шрифт в консоли Lucida Console
Миниатюры
Кодировки, вывод/ввод на консоль и в файл  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 04:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru