день добрый!
столкнулся при написании своей простенькой проги, на с++(консоль), с проблемой:
в проге спрашивается имя тестируемого и сохраняется в файл, раньше файл имел жесткое имя, сейчас есть необходимость сделать имя файла = имени при вводе. Так вот при вводе на англ. проблем нет , а при вводе на русском вместо них сохраняются кракозябры.
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include "Windows.h"
using namespace std;
void rus( char* _str )
{
int size;
size=strlen(_str)+1;
char *str=new char[size];
CharToOemA( _str,str );
cout<<str;
delete []str;
}
int main ()
{
SetConsoleOutputCP(866);///////////////////////////////////////////////
HANDLE hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);//
CONSOLE_SCREEN_BUFFER_INFO *ConsoleInfo = new CONSOLE_SCREEN_BUFFER_INFO();//
GetConsoleScreenBufferInfo(hConsoleHandle, ConsoleInfo);//
WORD OriginalColors = ConsoleInfo->wAttributes;//
const int lineSize = 255;
const int lineSize_small = 2;
int pr=0,nonpr=0,tit,otv;
char fio[lineSize],name[lineSize],lineotv[lineSize];
int p=0,ball=0;
char otvch;
char stek[lineSize];
ifstream F;
ofstream G;
F.open("D:\\abc4.txt");
F.getline (name,lineSize);
SetConsoleTextAttribute(hConsoleHandle,FOREGROUND_GREEN);
rus(name);
cout<<"\n";
SetConsoleTextAttribute(hConsoleHandle, OriginalColors);
rus("Введите ваше Имя и Фамилию: ");
cin.getline(fio,lineSize);
////////////////////////////
char name_vrem[lineSize];
char name_fale[lineSize+8];
for (p=0;(fio[p]!=0)&&(p<lineSize);p++)
{
name_vrem[p]=fio[p];
if (name_vrem[p]=' ')
{
name_vrem[p]='_';
}
}
name_vrem[p+5]=0;
name_vrem[p+4]='l';
name_vrem[p+3]='m';
name_vrem[p+2]='t';
name_vrem[p+1]='h';
name_vrem[p]='.';
name_fale[0]='D';
name_fale[1]=':';
name_fale[2]='\\';
for (p=0;name_vrem[p]!=0;p++)
{
name_fale[p+3]=name_vrem[p];
}
name_fale[p+3]=0;
for (p=0;name_fale[p]!=0;p++)
{
if (name_fale[p]>127)
{
name_fale[p]=name_fale[p]-20;
}
}
////////////////////////////
cout<<name_fale;
G.open(name_fale);/////// нужно как-то изменять русские буквы
OemToCharA(fio,fio);
G<<fio<<"<br>";
SetConsoleTextAttribute(hConsoleHandle, OriginalColors);
cout<<"PRESS ANY KEY TO END";
F.close();
G.close();
cin>>p;
}
понимаю что код кривой , но мне пока так чтоб точно понять что где потом буду улучшать.
помогите подсказкой как быть с русскими буквами!