Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2013, 17:58   #1
Mostransformer
Пользователь
 
Регистрация: 11.01.2012
Сообщений: 15
По умолчанию fstream и русский ввод в файл

Как организовать русский ввод в файл посредством ofstream? По стандарту - закорючки. setlocale не помогает, хотя наверное и не должен...
Mostransformer вне форума Ответить с цитированием
Старый 02.03.2013, 21:39   #2
Че Гевара
Форумчанин
 
Аватар для Че Гевара
 
Регистрация: 25.09.2012
Сообщений: 182
По умолчанию

setlocale только для вывода. Для русского ввода проделайте следующие действия:
1)подключите windows.h
Код:
#include <windows.h>
2)создайте переменную типа int (допустим это будет переменная cp) и присвойте ей значение, возвращаемое функцией GetConsoleCP()
Код:
int cp = GetConsoleCP();
3)перед каждым вводом вызывайте функцию SetConsoleCP() и передавайте ей параметр 1251
Код:
SetConsoleCP(1251);
4)после каждого ввода вызывайте эту же функцию и передавайте ей созданную ранее переменную
Код:
SetConsoleCP(cp);
Готово.
И даже не надо лазить каждый раз в свойства консоли и шаманить со шрифтами.
Должно подействовать, по крайней мере меня спасает
Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.
Brian W. Kernighan.

Последний раз редактировалось Че Гевара; 02.03.2013 в 22:35.
Че Гевара вне форума Ответить с цитированием
Старый 02.03.2013, 22:28   #3
AcTiV
Пользователь
 
Регистрация: 25.12.2012
Сообщений: 40
По умолчанию

подключаем библиотеку
#include "Windows.h"
потом в функции int main пишем
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

в итоге осталось в свойствах консоли перейти на вкладку шрифт и выбрать:
Consolas или Lucida Console

если сбивается, то опять свойства консоли
AcTiV вне форума Ответить с цитированием
Старый 03.03.2013, 13:57   #4
Mostransformer
Пользователь
 
Регистрация: 11.01.2012
Сообщений: 15
По умолчанию

Цитата:
Сообщение от Че Гевара Посмотреть сообщение
setlocale только для вывода. Для русского ввода проделайте следующие действия:
1)подключите windows.h
Код:
#include <windows.h>
2)создайте переменную типа int (допустим это будет переменная cp) и присвойте ей значение, возвращаемое функцией GetConsoleCP()
Код:
int cp = GetConsoleCP();
3)перед каждым вводом вызывайте функцию SetConsoleCP() и передавайте ей параметр 1251
Код:
SetConsoleCP(1251);
4)после каждого ввода вызывайте эту же функцию и передавайте ей созданную ранее переменную
Код:
SetConsoleCP(cp);
Готово.
И даже не надо лазить каждый раз в свойства консоли и шаманить со шрифтами.
Должно подействовать, по крайней мере меня спасает
Спасибо помогло, но следовало предупредить, что "ввод" - это ввод с клавиатуры, а то я уж думал, что у меня руки из ****.
Mostransformer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
fstream, файл не открывается Arantir# Помощь студентам 8 21.01.2013 19:04
fstream - не создает файл apeorin Общие вопросы C/C++ 5 01.12.2012 16:32
Не открывается текстовый файл для чтения (использовал fstream.h) ichigo9911 Общие вопросы C/C++ 7 13.03.2012 11:39
Русский ввод на ЯВе Kasper1 Общие вопросы по Java, Java SE, Kotlin 1 11.01.2011 20:26
Не воспринимает русский ввод. VisTBacK Общие вопросы C/C++ 6 14.02.2010 19:36