#include <cstdlib>
#include <iostream>
using namespace std;
char* rus(char* st)
{
unsigned char* p = st; // Ошибка преобразования типов в DEV-C++ выдаёт ошибку!!!
/* при обьявлении символов как char русские буквы
кодируются отрицательными числами */
while(*p)
{
if(*p >= 192)//здесь русская буква
if(*p <= 239) // А,Б, ... Я,а,б, ... п
*p -= 64;
else // р ... я
*p -= 16;
p++;
}
return st;
}
int main(int argc, char *argv[])
{
cout<<rus("Проверка");
system("PAUSE");
return EXIT_SUCCESS;
}
В C++ Builder
Вариант 1
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#include <conio.h>
#pragma hdrstop
#include <tchar.h>
char* rus(char* st); //Преобразует ANSI-строку в строку ASCII
//---------------------------------------------------------------------------
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
printf(rus("\nДля продолжения нажмите любую клавишу..."));
getch();
return 0;
}
//---------------------------------------------------------------------------
char* rus(char* st)
{
unsigned char* p = (unsigned char*)st;
while(*p)
{
if(*p >= 192)
if(*p <= 239)
*p -= 64;
else
*p -= 16;
p++;
}
return st;
}
//---------------------------------------------------------------------------
Вариант 2
#include <vcl.h>
#include <conio.h>
#include <cstdlib.h>
#include <iostream.h>
#pragma hdrstop
#include <tchar.h>
char* rus(char* st); //Преобразует ANSI-строку в строку ASCII
//----------------------------------------------------------------------------------------------------------------------------------------------------
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
cout<<rus("\nДля продолжения нажмите любую клавишу...");
getch();
return 0;
}
//----------------------------------------------------------------------------------------------------------------------------------------------------
char* rus(char* st)
{
unsigned char* p = (unsigned char*)st;
while(*p)
{
if(*p >= 192)
if(*p <= 239)
*p -= 64;
else
*p -= 16;
p++;
}
return st;
}