
Сообщение от
Bend3r
Возможно ошибка в твоем подсчете, либо в этой строке if((a>=65)&&(a<=122)).
Лучше найди офф источник и точно узнай начало сим. кодов лат. символов.
http://images.yandex.ru/yandsearch?t...86%D0%B0+ascii
полно картинок везде от 65 до 122)
подсчет у меня точный - 3 буквы латинских а показывает 4.
Добавлено через 2 минуты

Сообщение от
metaluga145
извиняюсь, немного ошибся. напишите в начале мейна
C++ |
1
| locale::global(locale("")); |
|
вместо
C++ |
1
| setlocale(LC_ALL, "rus"); |
|
у меня работает.
и правильно напишите диапазон значений чара. Русские символы начинаются со 198 кода,а не со 128(
источник)
спасибо за подсказки , но все равно киррилица заработала ток с таким подходом :
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| #include <iostream>
#include <locale>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
using namespace std;
bool check_char(char source)
{
char* check = "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";
while(*check)
{
if(*check == source)
return true;
check++;
}
return false;
}
void main()
{
locale::global(locale(""));
char a;
int cifr=0,simvLat=0,simvKir=0;
cout << "Открытие файла....."<<endl;
ifstream F("fail-text.txt");
F.open("D:\\1.txt", ios::in);
if(!F)(cout <<"Файл не открыт!"<< endl);
else
while (!F.eof())
{
F>>a;
if((a>=48)&&(a<=57))
cifr++;
if((a>=65)&&(a<=122))
simvLat++;
if(check_char(a))
simvKir++;
}
cout << "Цифр в файле:"<< cifr <<endl;
cout << "Латинских символов в файле:" <<simvLat<<endl;
cout << "Кириллических символов в файле:"<< simvKir << endl;
F.close();
system("pause");
} |
|