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

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

Войти
Регистрация
Восстановить пароль
 
DiffEreD
1430 / 767 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
#1

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

26.02.2012, 15:02. Просмотров 418. Ответов 6
Метки нет (Все метки)

Вот такой код:
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++):

почему выводит 0? - C++
Даны неотрицательные целые числа a, b. Найти F(a, b), где F=(M!+N!)/(M+N)! #include &lt;iostream&gt; using namespace std; int fact(int...

Почему не выводит m? - C++
С начала суток прошло N секунд (N — целое). Найти количество полных минут, прошедших с начала суток. #include &lt;iostream&gt; #include...

Почему не выводит? - C++
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные — в конец с сохранением порядка следования....

почему выводит 0? - C++
Даны неотрицательные целые числа a, b. Найти F(a, b), где F=(M!+N!)/(M+N)! #include &lt;iostream&gt; using namespace std; int fact(int...

Почему выводит нули?! - C++
Должно же перемножать. Почему выводит нули?! long double fact(int N) { if (N &lt; 0) return 0; if (N == 0) return 1;...

почему выводит смайлики? - C++
Драсте. У меня в программе вводится дата и события и потом идет сортировка и вывод. Я всьо сделал но на выводе вместо дат вывотит типа &quot;☺ ☻...

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

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

Добавлено через 2 минуты
Это для Си. Для С++ можно использовать класс locale.
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
26.02.2012, 17:10 #7
setlocale(0,"")

Всегда русский язык под рукой
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2012, 17:10
Привет! Вот еще темы с ответами:

почему float выводит 0 ? - C++
машинный нуль или в чем проблема? for(i=0; i&lt;k; i++) { t=t*2; } p=(1/t); ...

Почему выводит ноль? - C++
Пожалуйста, помогите с программой. Не могу понять, почему выводит ноль. #include&lt;iostream&gt; using namespace std; double fac(int...

Почему выводит всегда 0? - C++
Почему при любом значении k выводится 0? #include &lt;iostream&gt; using namespace std; void main() { double k, j, i; ...

Выводит не правильно, почему? - C++
#include&quot;conio.h&quot; #include&quot;stdlib.h&quot; #include&quot;stdio.h&quot; #include&quot;math.h&quot; int main() { float x,y,r; r=0.1+x; printf(&quot;Input...


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

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

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