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

Почему for_each() не выводит кирилицу - C++

Восстановить пароль Регистрация
 
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
26.02.2012, 15:02     Почему for_each() не выводит кирилицу #1
Вот такой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
void show(const std::string & s);
int main()
{
    using namespace std;
    setlocale(0, "");
    string input;
    vector<string> words;
    cout<<"Ведите слова для добавления в вектор (q to exit): "<<endl;
    while (cin>>input && input != "q")
        words.push_back(input);
    cout<<"\nВы ввели следующие слова:"<<endl;
    for_each(words.begin(), words.end(), show);
    system("pause");
    return 0;
}
void show(const std::string & s)
{
    std::cout<<s<<" ";
}
Алгоритм for_each() английские буквы отображает нормально, а русские - с "крякозябрами"?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 15:02     Почему for_each() не выводит кирилицу
Посмотрите здесь:

C++ Почему не выводит m?
C++ Почему выводит адреса?
C++ Почему не выводит?
Почему ничего не выводит? C++
Почему не выводит на экран C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 15:10     Почему for_each() не выводит кирилицу #2
Цитата Сообщение от yuron_477 Посмотреть сообщение
Алгоритм for_each()
Виноват не std::for_each. Почитайте здесь Русские шрифты в консоли
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
26.02.2012, 15:20  [ТС]     Почему for_each() не выводит кирилицу #3
Да сама программа русские символы отображает (я использую setlocale(0, "")), а неотображаются те символы которые были добавлены в vector<string> и выводятся через for_each(words.begin(), words.end(), show);
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 15:28     Почему for_each() не выводит кирилицу #4
Замените 16-ую строчку на
C++
1
std::cout << words[0] << std::endl;
И Вы поймете, что std::for_each здесь не причем.
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
26.02.2012, 15:41  [ТС]     Почему for_each() не выводит кирилицу #5
Незнаю, может у меня Visual Studio "накрылась".
Вот что выводит у меня: (добавил строчку std::cout << "words[0]: " << words[0] << std::endl; )
Получается что у меня vector<string> как то не так запихивает объекты string в себя.
Миниатюры
Почему for_each() не выводит кирилицу  
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
26.02.2012, 16:14     Почему for_each() не выводит кирилицу #6
yuron_477, Тебе необходимо перекодировать символы. В этой теме точно не нашел ответ Русские шрифты в консоли ? Поищи в поиске, такое делали уже не раз.

Добавлено через 19 минут
Можно воспользоваться http://ru.wikipedia.org/wiki/Iconv если не нужен кросплатформ.

Добавлено через 2 минуты
Это для Си. Для С++ можно использовать класс locale.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2012, 17:10     Почему for_each() не выводит кирилицу
Еще ссылки по теме:

C++ Выводит не правильно, почему?
почему выводит 0? C++
C++ почему выводит 0?

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

Или воспользуйтесь поиском по форуму:
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
26.02.2012, 17:10     Почему for_each() не выводит кирилицу #7
setlocale(0,"")

Всегда русский язык под рукой
Yandex
Объявления
26.02.2012, 17:10     Почему for_each() не выводит кирилицу
Ответ Создать тему
Опции темы

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