Рубрики:
Тема: "Запись в файл русских букв (консоль С++)."
Программа работает с русскими буквами нормально, но когда дело доходит до записи в файл записывает какую-то крякозябру. Помогите решить эту проблему. Использую компилятор Dev C++
#include
#include
#include
#include
using namespace std;
class Cesar {
char str[80];
char str1[80];
char Alfavit1[35];
char Alfavit2[35];
char p;
public:
Cesar() {strcpy(Alfavit1, "AAAAAA??CEEEEIIII?NOOOOO?OUUUUY??"); strcpy(Alfavit2, "aaaaaa??ceeeeiiii?nooooo?ouuuuy?y");}
char FileName[50];
int sdvig;
void Zashifrovka();
};
void Cesar::Zashifrovka()
{
cout cin >> FileName;
ofstream out(FileName); // Nicaaai iioie aey auaiaa eioi?iaoee e ioe?uaaai oaee test (ia?aaaai eiino?oeoi?o eiy oaeea, oio a nai? i?a?aau ioe?uaaao oaee)
if(!out) { // I?e iaoaa?iii ioe?uoee iioie noaiiaeouny cia?aieai false, a iaiai?io true
cout }
cout cin >> str;
cout cin >> sdvig;
for(int i=0; i == Alfavit1[j]) {
str1 = Alfavit1[j+sdvig];
}
if(str == Alfavit2[j]) {
str1 = Alfavit2[j+sdvig];
}
}
}
str1[34] = '\0';
cout for(int i=0; i;
out.close();
}
int main()
{
Cesar obj;
int x;
//setlocale(LC_ALL, "rus");
cout cout cout cout cin >> x;
switch(x) {
case 1: obj.Zashifrovka();
break;
case 2:
break;
}
//if()
getch();
return 0;
}
- Ваш редактор кода настроен на кодировку ISO-8859-1.
Измените на Windows-1251 и будет вам, некоторое, счастье!
Для начала смените шрифт самой консоли на Lucida Console. Для этого откройте любую свою консольную программу, щёлкните ПКМ по заголовку окна и из контекста выберите Свойства. В открывшемся окне перейдите на вкладку Шрифт и выделите Lucida Console, после чего нажмите кнопку ОК. В появившемся окне Изменение свойств, установите галочку напротив Сохранить свойства для других окон с теми же именами и нажмите кнопку ОК.
Проверьте работоспособность. Если изменений не произошло, то в функции main() первой строкой поставьте оператор.. .
system("chcp 1251");
...а вслед за ним.. .
system("cls");
Теперь всё должно работать!
P.S. Функция system() объявлена в заголовочном файле stdlib.h.