Форум программистов, компьютерный форум CyberForum.ru

Как в консоли на C++ писать на русском - C++

Восстановить пароль Регистрация
 
buts07
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 14
12.03.2014, 13:00     Как в консоли на C++ писать на русском #1
Здравствуйте, с выводом текста разобрался, русские буквы выводит нормально, а вот с вводом проблемма, вводится абракадабра.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
kol=0;
while (fgetc(fout)!=EOF) kol++;
fseek(fout,0,SEEK_SET);
system("cls");
printf("\nФИО владельца ");
scanf("%s",&buf);
if (kol!=0) fprintf(fp,"\n%s\n",&buf);
else fprintf(fp,"%s\n",&buf);
strcpy(buf,"\0");
printf("Кадастровый номер");
scanf("%s",&buf);
fprintf(fp,"%s\n",&buf);
strcpy(buf,"\0");
printf("Числится ли в аренде? ");
scanf("%s",&buf);
fprintf(fp,"%s\n",&buf);
strcpy(buf,"\0");
printf("Площадь ");
scanf("%s",&buf);
fprintf(fp,"%s",&buf);
strcpy(buf,"\0");
printf("Продолжить? (Y|N)");
y=getch();
fclose(fp);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2014, 13:00     Как в консоли на C++ писать на русском
Посмотрите здесь:

сохранить в файл текст, введенный из консоли, на русском C++
извините за (может быть тупой) вопросс. что такое "писать в консоли"? C++
C++ как писать в консольных программах на русском в c++
Помогите писать на С++ через шаблоны. Консуле я писал, но надо писать исползуя шаблоны C++
C++ почему текст сообщения на русском языке в программе на с++ не выводиться на русском языке при работе программы в операционной системе ms doc в конс
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
12.03.2014, 15:48     Как в консоли на C++ писать на русском #2
Тебе сюда, тема главная в разделе для новичков Русские шрифты в консоли
buts07
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 14
12.03.2014, 16:50  [ТС]     Как в консоли на C++ писать на русском #3
Читал не втупил. Вот что я делал
C++ (Qt)
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <conio.h>
#include <fstream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <baza.h>
#include <windows.h>
 
using namespace std;
void main()
{
    SetConsoleCP(1251);
 SetConsoleOutputCP(1251);
 int y=0;
 system("cls");
 while (y!=48)
  {
     system("cls");
    printf("-----------Меню-----------------\n");
    printf("| 1 - Добавить запись          |\n");
    printf("| 2 - Просмотр                 |\n");
    printf("| 3 - Поиск                    |\n");
    printf("| 4 - Удалить запись           |\n");
    printf("| 5 - Сортировать              |\n");
    printf("| 0 - Выход                    |\n");
    printf("--------------------------------\n\n");
    y=_getch();
    switch(y)
     {  
    case 49: dobav();break;
    case 50: vivod();_getch();break;
    case 51: poisk();_getch();break;
    case 52: del();dell_enter();break;
    case 53: sort();_getch(); break;
      }
   }
}
стало и вводить и выводить каракули
mustimur
268 / 222 / 57
Регистрация: 22.11.2013
Сообщений: 832
Записей в блоге: 1
12.03.2014, 20:21     Как в консоли на C++ писать на русском #4
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <conio.h>
#include <fstream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
 
#include <windows.h>
 
using namespace std;
void main()
{
setlocale( LC_ALL,"Russian" );
 int y=0;
 system("cls");
 while (y!=48)
  {
     system("cls");
    printf("-----------Меню-----------------\n");
    printf("| 1 - Добавить запись          |\n");
    printf("| 2 - Просмотр                 |\n");
    printf("| 3 - Поиск                    |\n");
    printf("| 4 - Удалить запись           |\n");
    printf("| 5 - Сортировать              |\n");
    printf("| 0 - Выход                    |\n");
    printf("--------------------------------\n\n");
    y=_getch();
    switch(y)
     {  
    case 49: dobav();break;
    case 50: vivod();_getch();break;
    case 51: poisk();_getch();break;
    case 52: del();dell_enter();break;
    case 53: sort();_getch(); break;
      }
   }
ranebull
 Аватар для ranebull
512 / 345 / 54
Регистрация: 23.06.2013
Сообщений: 1,182
Записей в блоге: 6
12.03.2014, 20:22     Как в консоли на C++ писать на русском #5
Цитата Сообщение от buts07 Посмотреть сообщение
Читал не втупил. Вот что я делал
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
#include <iostream>
using namespace std;
int main()
{
    system("chcp 1251 > nul");
    int y = 0;
    while (y!= 48)
    {
        cout <<("-----------Меню-----------------\n")
             <<("| 1 - Добавить запись          |\n")
             <<("| 2 - Просмотр                 |\n")
             <<("| 3 - Поиск                    |\n")
             <<("| 4 - Удалить запись           |\n")
             <<("| 5 - Сортировать              |\n")
             <<("| 0 - Выход                    |\n")
             <<("--------------------------------\n\n");
        cin >> y;
        switch (y)
        {
        case 49: cout<<"123"; break;
        case 50: cout << "123"; break;
        case 51: cout << "123"; break;
        case 52: cout << "123"; break;
        case 53: cout << "123"; break;  
        }
    }
    system("pause > nul");
}
Миниатюры
Как в консоли на C++ писать на русском  
buts07
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 14
12.03.2014, 23:19  [ТС]     Как в консоли на C++ писать на русском #6
Все равно. Отображает, печатает на русском. А когда просматриваю с базы текст который ввел он каракулями выводит.
Вот полностью вся прога в двух файлах.

.h
C++ (Qt)
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
void dobav()
{
char buf[100];
int y=121,kol;
FILE *fp;
FILE *fout;
if((fout=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
while (y==121)
{
if((fp=fopen("Baza.txt","a"))==NULL)
{ puts("Error");
exit(1);
}
kol=0;
while (fgetc(fout)!=EOF) kol++;
fseek(fout,0,SEEK_SET);
system("cls");
printf("\nФИО владельца ");
scanf("%s",&buf);
if (kol!=0) fprintf(fp,"\n%s\n",&buf);
else fprintf(fp,"%s\n",&buf);
strcpy(buf,"\0");
printf("Кадастровый номер");
scanf("%s",&buf);
fprintf(fp,"%s\n",&buf);
strcpy(buf,"\0");
printf("Числится ли в аренде? ");
scanf("%s",&buf);
fprintf(fp,"%s\n",&buf);
strcpy(buf,"\0");
printf("Площадь ");
scanf("%s",&buf);
fprintf(fp,"%s",&buf);
strcpy(buf,"\0");
printf("Продолжить? (Y|N)");
y=getch();
fclose(fp);
}
fclose(fout);
system("cls");
 
}
void vivod()
{ char str[200],str2[200],str3[200],str4[200];
int i=1,n=1,kol=0;
FILE *fp2;
if((fp2=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
system("cls");
printf("--------------------------------------------------------------------\n");
printf("|Номер |   Владелец  |Кадастровый номер| Аренда       |    Площадь |\n");
printf("--------------------------------------------------------------------\n");
while (!feof(fp2))
{
switch(i)
{ case 1: fscanf(fp2,"%s",&str); break;
case 2: fscanf(fp2,"%s",&str2);break;
case 3: fscanf(fp2,"%s",&str3);break;
case 4: fscanf(fp2,"%s",&str4);break;
}
if (i==4)
{
kol++;
printf("|#%4d | %10s | %15s| %10s | %10s|\n",n/4,str,str2,str3,str4);
i=0;
strcat(str,"\0");
strcat(str2,"\0");
strcat(str3,"\0");
strcat(str4,"\0");
}
if ((kol==20)&&(!feof(fp2)))
{
kol=0;
printf("Для продолжения нажмите любую клавишу...");getch();
system("cls");
printf("--------------------------------------------------------------------\n");
printf("|Номер |   Владелец  |Кадастровый номер| Аренда       |    Площадь |\n");
printf("--------------------------------------------------------------------\n");
}
i++;
n++;
}
fclose(fp2);
}
void poisk()
{ char str[200],str2[200],str3[200],str4[200],poisk[100];
int i=1;
FILE *fp3;
if((fp3=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
vivod();
printf("\nEnter required city ");
scanf("%s",&poisk);
while(!feof(fp3))
{
switch(i)
{ case 1: fscanf(fp3,"%s",&str); break;
case 2: fscanf(fp3,"%s",&str2);break;
case 3: fscanf(fp3,"%s",&str3);break;
case 4: fscanf(fp3,"%s",&str4);break;
}
if (i==4)
{
if (strstr(str,poisk)!=NULL) printf("%10s %10s %10s %10s\n",str,str2,str3,str4);
i=0;
strcpy(str,"\0");
strcpy(str2,"\0");
strcpy(str3,"\0");
strcpy(str4,"\0");
}
i++;
}
fclose(fp3);
}
void del()
{ 
struct s 
{
char vla[200];
char kad[200];
char are[200];
char plo[200];
}; 
char str[200],str2[200],str3[200],str4[200];
int n,i,j;
FILE *fp6;
if((fp6=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
system("cls");
vivod();
int kol=1,_kol=4;
while (!feof(fp6)) if(getc(fp6)==10) kol++;
s *ms = new s[kol/4];
fseek(fp6, 0, SEEK_SET);
i=0;
while(!feof(fp6))
{
fscanf(fp6,"%s",&str);
fscanf(fp6,"%s",&str2);
fscanf(fp6,"%s",&str3);
fscanf(fp6,"%s",&str4);
strcpy(ms[i].vla,str);
strcpy(ms[i].kad,str2);
strcpy(ms[i].are,str3);
strcpy(ms[i].plo,str4);
i++;
}
printf("\nEnter numder of a line ");
scanf("%d",&n);
fclose(fp6);
if((fp6=fopen("Baza.txt","w"))==NULL)
{ puts("Error");
exit(1);
}
for(j=0;j<kol/4;j++,_kol+=4)
if (j+1!=n) fprintf(fp6,"%s\n%s\n%s\n%s\n",ms[j].vla,ms[j].kad,ms[j].are,ms[j].plo);
fclose(fp6);
delete [] ms;
}
void dell_enter()
{
int kol_s=0,_kol_s=0;
char buf[100];
FILE *fp;
FILE *fp1;
if((fp=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
if((fp1=fopen("Baza_buf.txt","w"))==NULL)
{ puts("Error");
exit(1);
}
while (!feof(fp)) { strcpy(buf,"\0");fscanf(fp,"%s",&buf); kol_s++;}
fseek(fp, 0, SEEK_SET);
if (atoi(buf)==0)
{
while (!feof(fp))
{
fscanf(fp,"%s",&buf);
if(_kol_s==kol_s-2)
fprintf(fp1,"%s",buf);
if(_kol_s<kol_s-2) fprintf(fp1,"%s\n",buf);
_kol_s++;
}
fclose(fp);
fclose(fp1);
remove("Baza.txt");
rename("Baza_buf.txt","Baza.txt");
}
}
void sort()
{ struct s
{
char vla[200];
char kad[200];
char are[200];
char plo[200];
}; 
char str[200],str2[200],str3[200],str4[200];
int n,i,j;
FILE *fp6;
if((fp6=fopen("Baza.txt","r"))==NULL)
{ puts("Error");
exit(1);
}
system("cls");
int kol=0,_kol=4;
while (!feof(fp6)) if(getc(fp6)==10) kol++;
s *ms = new s[1+kol/4];
fseek(fp6, 0, SEEK_SET);
i=0;
while(!feof(fp6))
{
fscanf(fp6,"%s",&str);
fscanf(fp6,"%s",&str2);
fscanf(fp6,"%s",&str3);
fscanf(fp6,"%s",&str4);
strcpy(ms[i].vla,str);
strcpy(ms[i].kad,str2);
strcpy(ms[i].are,str3);
strcpy(ms[i].plo,str4);
i++;
}
s temp; 
for(j=0;j<1+kol/4;j++) 
for (i=0;i<1+kol/4;i++)
if (atoi(ms[i].plo)<atoi(ms[j].plo))
{
strcpy(temp.vla,ms[i].vla);
strcpy(temp.kad,ms[i].kad);
strcpy(temp.are,ms[i].are);
strcpy(temp.plo,ms[i].plo);
 
strcpy(ms[i].vla,ms[j].vla);
strcpy(ms[i].kad,ms[j].kad);
strcpy(ms[i].are,ms[j].are);
strcpy(ms[i].plo,ms[j].plo);
 
strcpy(ms[j].vla,temp.vla);
strcpy(ms[j].kad,temp.kad);
strcpy(ms[j].are,temp.are);
strcpy(ms[j].plo,temp.plo);
}
fclose(fp6);
if((fp6=fopen("Baza.txt","w"))==NULL)
{ puts("Error");
exit(1);
}
for(j=0;j<1+kol/4;j++,_kol+=4) 
{ 
if (_kol==kol+1) fprintf(fp6,"%s\n%s\n%s\n%s",ms[j].vla,ms[j].kad,ms[j].are,ms[j].plo);
if (_kol!=kol+1) fprintf(fp6,"%s\n%s\n%s\n%s\n",ms[j].vla,ms[j].kad,ms[j].are,ms[j].plo);
}
fclose(fp6);
vivod();
delete [] ms;
}
.c++
C++ (Qt)
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <conio.h>
#include <fstream>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <baza.h>
#include <locale> 
 
using namespace std;
void main()
{
    setlocale (LC_ALL, "Russian");
 int y=0;
 system("cls");
 while (y!=48)
  {
     system("cls");
    printf("-----------Меню-----------------\n");
    printf("| 1 - Добавить запись          |\n");
    printf("| 2 - Просмотр                 |\n");
    printf("| 3 - Поиск                    |\n");
    printf("| 4 - Удалить запись           |\n");
    printf("| 5 - Сортировать              |\n");
    printf("| 0 - Выход                    |\n");
    printf("--------------------------------\n\n");
    y=_getch();
    switch(y)
     {  
    case 49: dobav();break;
    case 50: vivod();_getch();break;
    case 51: poisk();_getch();break;
    case 52: del();dell_enter();break;
    case 53: sort();_getch(); break;
      }
   }
}
ranebull
 Аватар для ranebull
512 / 345 / 54
Регистрация: 23.06.2013
Сообщений: 1,182
Записей в блоге: 6
13.03.2014, 05:13     Как в консоли на C++ писать на русском #7
Цитата Сообщение от buts07 Посмотреть сообщение
Все равно. Отображает, печатает на русском. А когда просматриваю с базы текст который ввел он каракулями выводит.
Добавляете в CPP-файл следующий код:
C++
1
2
3
4
5
6
#include<Windows.h>
int main ()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);   
}
Т.е. вам нужно добавить заголовочный файл Windows.h и два оператора SetConsoleCP(1251), SetConsoleOutputCP(1251). И установите шрифт Lucida Console в свойствах консоли.
Проверил проект у себя - все нормально выводит.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2014, 15:07     Как в консоли на C++ писать на русском #8
buts07, вот это обязательно ещё нужно ещё сделать:
Цитата Сообщение от ranebull Посмотреть сообщение
И установите шрифт Lucida Console в свойствах консоли.
Установка шрифта Lucida Console
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2014, 23:05     Как в консоли на C++ писать на русском
Еще ссылки по теме:

Как сохранить текст на русском? C++
Можно писать в консоли 20 шрифтом C++
C++ Писать в консоли на предыдущей строке

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
buts07
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 14
16.03.2014, 23:05  [ТС]     Как в консоли на C++ писать на русском #9
Всем спасибо, разобрался
Yandex
Объявления
16.03.2014, 23:05     Как в консоли на C++ писать на русском
Ответ Создать тему
Опции темы

Текущее время: 16:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru