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

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

Войти
Регистрация
Восстановить пароль
 
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
#1

Проблемы с кодировкой - C++

12.02.2013, 10:42. Просмотров 534. Ответов 6
Метки нет (Все метки)

Проблема в следующем:
Нужно сравнить два слова на русском языке. Одно - читается с текстового файла, другое вводится с консоли.
Понимаю, что нужно переключать кодировки...
типа: setlocale(0,""); и setlocale(0, ".OCP");
Но это не помогает. Как бы не менял кодировки, одинаковые русские слова в файле и с консоли понимаются. как различные.
Подскажите чего и где тут изменить, добавить (в смысле кодировок), чтобы код работал правильно.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <string>
#include <fstream>
    using namespace std;
    int main()
    {
    string a,b;
    setlocale (0,"");
    cin >> a;
    
    ifstream f("1.txt");
    f >> b;
    f.close();
    
    if (a==b) cout << 1;
    else cout << 0;
 
    return 0;
    }
setlocale я поудалял, поскольку нужного результата не добился.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2013, 10:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблемы с кодировкой (C++):

Проблемы с кодировкой символов - C++
/*Письмо президенту*/ #include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); ...

Проблемы с кодировкой при выводе данных - C++
Пользуюсь хрюшей и VS 2008 Программа 1 #include &lt;fstream&gt; #include &lt;iostream&gt; #include &lt;string&gt; using namespace std; int main()...

Проблемы с кодировкой при сравнении строк - C++
Здравствуйте! Мне, нужно сравнить две строки: одну получаю get запросом(на сайте кодировка windows 1251), а вторая указывается...

Проблемы с кодировкой при подключении текстового файла - C++
Проблема вот в чем...В файле question.txt лежит вопрос, написанный по русски, но когда в консоле я вывожу содержимое &quot;question.txt&quot; на...

Проблемы с кодировкой при переключении из Debug в Release в MSVS 2010 - C++
Собираю проект в режиме дебаг все символы норм отображаются,переключаю на релиз и одни кракозябры, в чем может быть дело ?

неприятности с кодировкой! - C++
HerProject.cpp: главный файл проекта. #include &quot;stdafx.h&quot; #include &quot;stdio.h&quot; #include &quot;iostream&quot; #include &lt;conio.h&gt; #include...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
nonedark2008
903 / 642 / 131
Регистрация: 28.07.2012
Сообщений: 1,733
12.02.2013, 11:16 #2
Верни локаль на русскую, и попробуй использовать вместо string - wstring, вместо cin - wcin, и т. д.
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
12.02.2013, 11:28  [ТС] #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
#include <iostream>
#include <string>
#include <fstream>
 
 
    using namespace std;
    int main()
    {
    wstring a,b;
    wcin >> a;
    
 
    
    wifstream f("1.txt");
    f >> b;
    f.close();
 
    
    if (a==b) cout << 1;
    else cout << 0;
 
 
    return 0;
    }
Пробовал текстовый файл сохранять в кодировках ANSI, UTF-8, Юникод... Результат не меняется. Одинаковые русские слова не сравниваются...
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
12.02.2013, 11:32 #4
LVV, ось какая?


под винду можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
    using namespace std;
    int main()
    {
    string a,b;
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    cin >> a;
    
    ifstream f("1.txt");
    f >> b;
    f.close();
    
    if (a==b) cout << 1;
    else cout << 0;
 
    return 0;
    }
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
12.02.2013, 11:57  [ТС] #5
Спасибо, Croessmah. Правда, решая одну проблему создаём новые (с выводом на экран). Но, главное, я понял идею, а дальше разберусь...
Croessmah
Модератор
Эксперт CЭксперт С++
13133 / 7396 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
12.02.2013, 11:58 #6
Цитата Сообщение от LVV Посмотреть сообщение
с выводом на экран
шрифт Lucida Console
palva
2609 / 1831 / 262
Регистрация: 08.06.2007
Сообщений: 6,989
Записей в блоге: 4
12.02.2013, 11:59 #7
Другая идея. Можно перекодировать после ввода.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <fstream>
#include <windows.h>
    using namespace std;
    int main()
    {
    string a,b;
    setlocale (0,"");
    cin >> a;
    char buff[100];
    OemToCharA(a.c_str(),buff);
    
    ifstream f("1.txt");
    f >> b;
    f.close();
    
    if (buff==b) cout << 1;
    else cout << 0;
 
    return 0;
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2013, 11:59
Привет! Вот еще темы с ответами:

Непонятка с кодировкой - C++
Есть следующий код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; using std::wstring; using std::getline; using...

Подскажите с кодировкой файла в UCS-2 - C++
Всем привет. Не получается получить на выходе файл в кодировке UCS-2 LE BOM. (из win-1251) Пробую так: #include &lt;iostream&gt; ...

Считать текст из файла с кодировкой utf-16 LE - C++
Возникла кое-какая проблема. У меня имеется xml файл, в кодировке UTF-16 LE с определенным содержимым. На данный момент мне нужно получить...

Программа не обрабатывает текст из файла с кодировкой, отличной от ANSI - C++
Здравствуйте. Имеется программка, которая читает текст из файла, обрабатывает его и записывает результат в другой текстовый файл. Проблема:...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.02.2013, 11:59
Ответ Создать тему
Опции темы

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