Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Domonion
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 89
#1

Не реагирует на русский язык - C++

04.06.2013, 10:51. Просмотров 1001. Ответов 29
Метки нет (Все метки)

В cmd Visual C++ 2010 express после какого-то времени работы стали выводится какието каракули там, где должен быть русский язык + на русский язык он вообще не реагирует. вот код телефонной книги
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
52
53
54
// Телефонная книга
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
 
class Number
{
public:
  string name;
  string number;
  Number(const Number &v): 
    name(v.name),
    number(v.number) {}
  Number() {}
  const Number &operator=(const Number &v)
  {
    name = v.name;
    number = v.number;
    return v;
  }
};
 
int main()
{
  fstream f("file.txt");
  vector<Number> telBook;
  while (true)
  {
    Number t;
    f >> t.name;
    if (f.eof())
      break;
    f >> t.number;
    if (f.eof())
      break;
    telBook.push_back(t);
  }
  while (true)
  {
    cout << ("Имя или стоп - ");
    string name;
    cin >> name;
    if (name == "стоп")
      break;
    for (int i = 0; i < telBook.size(); ++i)
    {
      if (telBook[i].name == name)
    cout << name << " " << telBook[i].number << endl;
    }
  }
    
}
при активации в cmd такая вот билебирда(скрин 1)
имена в file.txt мне пришлось менять все на английский, тк когда я их прописывал на русском программа не реаигировала(скрин 2), а на английском работала как миленькая(скрин 3).
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
52
53
54
// Телефонная книга
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
using namespace std;
 
class Number
{
public:
  string name;
  string number;
  Number(const Number &v): 
    name(v.name),
    number(v.number) {}
  Number() {}
  const Number &operator=(const Number &v)
  {
    name = v.name;
    number = v.number;
    return v;
  }
};
 
int main()
{
  fstream f("file.txt");
  vector<Number> telBook;
  while (true)
  {
    Number t;
    f >> t.name;
    if (f.eof())
      break;
    f >> t.number;
    if (f.eof())
      break;
    telBook.push_back(t);
  }
  while (true)
  {
    cout << ("Name or stop - ");
    string name;
    cin >> name;
    if (name == "stop")
      break;
    for (int i = 0; i < telBook.size(); ++i)
    {
      if (telBook[i].name == name)
    cout << name << " " << telBook[i].number << endl;
    }
  }
    
}
+ 1)прога почему-то не видит первой строчки файла(file.txt)
+ 2) Объясните, как работает и какую роль в программе играет
C++
1
2
3
4
5
6
7
8
9
10
Number(const Number &v): 
    name(v.name),
    number(v.number) {}
  Number() {}
  const Number &operator=(const Number &v)
  {
    name = v.name;
    number = v.number;
    return v;
  }
Пожааалуйста помогите!
0
Миниатюры
Не реагирует на русский язык   Не реагирует на русский язык   Не реагирует на русский язык  

Вложения
Тип файла: txt file.txt (215 байт, 5 просмотров)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2013, 10:51
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не реагирует на русский язык (C++):

Русский язык - C++
Нужно написать программу, которая исправляла бы ошибки после Ж,Ч,Ш,Щ(Ы,Я,Ю на И,А,У). Учитывая исключения: Жюри, Брошюра, парашют. ...

Русский Язык!!! - C++
Как в переменную char A; занести Ф только чтоб после отоброжалось не каракули а Ф! и библиотеку!

русский язык - C++
Помогите пишу задачу,как сделать чтоб всё выводило на русском языке? какая функция? или фрагмент кода? cout&lt;&lt;&quot;Dobavlenie informacii...

Русский язык в Си - C++
Здравствуйте, Столкнулся с банальной проблемой При вводе-выводе в текстовый файл и в консоль при обращении непосредственно из main()...

Русский язык - C++
Уже задолбался с попыткой заставить выводить считанные русские строки. Имеем. По идее там должна быть функция CharToOem но она коверкает....

Русский язык в C++ - C++
Как в C++ консоли подключить русский язык желательной setLoceta(Rus) такой функцией, у меня не получилось её использваоть

29
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
05.06.2013, 10:00 #16
Цитата Сообщение от Domonion Посмотреть сообщение
file.txt в первом сообщении.
и он в кодировке UTF-8
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2013, 10:04 #17
Цитата Сообщение от Domonion Посмотреть сообщение
да. сначала, некоторое время всё было нормально, потом что-то произошло, вылезла ошибка , и стали такие вот каракули. ПРИЧЁМ! я смотрел в инете про сбитую кодирувку командной строки, но мои каракули не схожи с ихними. Вот я тут написал, поскольку сам в замешательстве.
Вы проблему хотите решить? Почему на просьбы не реагируете (11 пост)?
0
Domonion
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 89
05.06.2013, 10:08  [ТС] #18
для непосвященных?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
05.06.2013, 10:09 #19
Проверьте кодировку файла с исходным кодом. Такого же эффекта как у Вас удалось добиться преобразовав исходный код в UTF-8 без BOM.
Попробуйте преобразовать его в ANSI
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2013, 10:10 #20
Цитата Сообщение от Domonion Посмотреть сообщение
для непосвященных?
Я так понимаю, что не хотите?
0
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
05.06.2013, 10:16 #21
Попробуйте заменить свои файлы на те, что в архиве и скомпилировать проект. Они аналогичны Вашим(с SetConsoleCP и т.д.), просто в другой кодировке
ansi_code.zip
1
Domonion
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 89
05.06.2013, 10:21  [ТС] #22
для aslav22. я не заметил пост. Сижу через модем, так что не всё прогружается. Вот. Только сразу говорю, проблема не решилась. К тому же я писал, что пробовал эти методы. Вы тоже не заметили пост.
ой. я не те файлы прикрепил, постом ниже будут те. но проблема не решилась.
0
Миниатюры
Не реагирует на русский язык   Не реагирует на русский язык  
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
05.06.2013, 10:24 #23
Цитата Сообщение от Domonion Посмотреть сообщение
К тому же я писал, что пробовал эти методы.
в приведенных скриншотах отсутствуют строчки
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Добавлено через 1 минуту
А на скриншоте alsav22 они есть
0
Domonion
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 89
05.06.2013, 10:25  [ТС] #24
Цитата Сообщение от Domonion Посмотреть сообщение
ой. я не те файлы прикрепил, постом ниже будут те. но проблема не решилась.
вах-вах-вах
0
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
05.06.2013, 10:26 #25
Пост 21 попробуйте выполнить
0
Domonion
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 89
05.06.2013, 10:40  [ТС] #26
Для aslav. Твоя программа работает, но для моей волшебные строчки
C++
1
2
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
не помогли.
Огромное спасибо Croessmah! Да, дело было в кодировке, всё заработало.
Извини, пожалуйста, kazak, из-за моего медленного интеренета тебя не прогрузило.
Однако тема не закрыта! Вы же не забыли
Цитата Сообщение от Domonion Посмотреть сообщение
+ 1)прога почему-то не видит первой строчки файла(file.txt)
+ 2) Объясните, как работает и какую роль в программе играет
C++
1
2
3
4
5
6
7
8
9
10
Number(const Number &v): 
    name(v.name),
    number(v.number) {}
  Number() {}
  const Number &operator=(const Number &v)
  {
    name = v.name;
    number = v.number;
    return v;
  }
Пожааалуйста помогите!
Скрины прекреплять не удается, инет тормозит(хотя они весят там по мб 1-2)
0
alsav22
5429 / 4824 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
05.06.2013, 10:45 #27
Цитата Сообщение от Domonion Посмотреть сообщение
Вы тоже не заметили пост
Заметил я всё. Мне нужен определённый код (мой), а не тот, которые вы пробовали и неизвестно как (только с ваших слов).

Добавлено через 4 минуты
Если не работает конкретный код, не нужно писать так , как будто вообще, в системе, не работает русский язык при запуске .exe.
Цитата Сообщение от Domonion Посмотреть сообщение
Однако тема не закрыта! Вы же не забыли
Это уже другая тема.
0
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
05.06.2013, 10:48 #28
Цитата Сообщение от Domonion Посмотреть сообщение
прога почему-то не видит первой строчки файла(file.txt)
Дубль записи из из файла file.txt удален.
Результат выполнения:
Название: Безымянный.png
Просмотров: 15

Размер: 1.5 Кб
0
Domonion
1 / 1 / 0
Регистрация: 03.06.2013
Сообщений: 89
05.06.2013, 10:59  [ТС] #29
Да, из вашего file.txt всё работает хорошо. Но всё-таки объяснить
C++
1
2
3
4
5
6
7
8
9
10
Number(const Number &v): 
    name(v.name),
    number(v.number) {}
  Number() {}
  const Number &operator=(const Number &v)
  {
    name = v.name;
    number = v.number;
    return v;
  }
значение вот этого можете? просто если убрать эту часть, работает точно так же
0
Croessmah
Ушел
Эксперт CЭксперт С++
13565 / 7716 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
05.06.2013, 11:03 #30
Конструктор копий, конструктор по умолчанию и оператор присваивания. В данном случае, если их убрать, то компилятор автоматически сгенерирует такие же по функциональности
0
05.06.2013, 11:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 11:03
Привет! Вот еще темы с ответами:

русский язык - C++
Использую компилятор Dev C++ , при выводе результата если написать слово про русски то оно выводиться непонятными иероглифами, на латинице...

Русский язык - C++
char szNonColorEmbeddedMsg; int iNonColorEmbeddedMsgLen = 0; for (size_t pos = 0; pos &lt; strlen(szMsg) &amp;&amp; szMsg != '\0'; pos++) ...

Русский язык - C++
В общем у меня такая проблема , имеется код , в котором нужно что бы выводились русские буквы (имеется ввиду что без setlocale русские...

Не работает русский язык - C++
Если выбрать в свитче 2 или 4 варианты (ввод вручную) и рассчитать их, то когда будет рассчитывать выдаст что-то типа этого: 1) , …¤г Ї®...


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.