Не могу прочитать русский текст в dos кодировке. Все уже облазил... везде написано, что нужно установить локаль и все будет классно, но не получается...

Помогите, пожалуйста.
std::ifstream * pLogFile = new std::ifstream;
std::locale loc(".866");
pLogFile->imbue( loc );
pLogFile->open( sFilePath.c_str());
if(pLogFile->is_open())
{
char c[5];
pLogFile->read(c, 5);
pLogFile->close();
}
delete pLogFile;
Извини, не занимался твоей проблемой конкретно, но что-то здесь у тебя не так. Ну установишь ты локаль в 866 страницу, а дальше что? Как система поймет, что ты хочешь из 866 в 1251 данные перевести??? setlocale подходит лишь для унарных локалзависимых операций. Здесь тебе нужен всего лишь OemToChar.
Posted via RSDN NNTP Server 1.7 beta
Здравствуйте, Аноним, Вы писали:
А>Не могу прочитать русский текст в dos кодировке. Все уже облазил... везде написано, что нужно установить локаль и все будет классно, но не получается...
Помогите, пожалуйста.
А>
А> std::ifstream * pLogFile = new std::ifstream;
А> std::locale loc(".866");
А> pLogFile->imbue( loc );
А> pLogFile->open( sFilePath.c_str());
А> if(pLogFile->is_open())
А> {
А> char c[5];
А> pLogFile->read(c, 5);
А> pLogFile->close();
А> }
А> delete pLogFile;
А>
Используй wifstream и все будет ок... Читай точно так же, только из wifstream. Потом перекодируешь c помощью WideCharToMultiByte. И будет читать dos как миленькая..

))
Здравствуйте, <Аноним>, Вы писали:
А>Не могу прочитать русский текст в dos кодировке. Все уже облазил... везде написано, что нужно установить локаль и все будет классно, но не получается...
Помогите, пожалуйста.
просто читаешь по символьно и по таблице ASCII делаешь смещение кода символа. будь внимателен в таблице разное смещение для прописных и строчных букв.
примерный код такой:
void printWORD(char *g)
{
int i,n;
n=strlen(g);
for(i=0; i<n;i++)
{ if(g[i]!=' ') g[i]=g[i]+192;
}
printf("\n%s\n",g);
}
это если все буквы БОЛЬШИЕ, для строчных добавь проверку на принадлежность интервалу и прибавляй свое смещение (по-моему 64).
... << RSDN@Home 1.1 beta 1 >>