Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Benzema
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 58
1

Иероглифы в выводе

27.09.2015, 22:24. Просмотров 953. Ответов 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <vector>
#include <string>
#include <conio.h>
#include <windows.h>
 
using namespace std;
 
int main()
{
    setlocale(LC_CTYPE, "Russian");
    string line;
    string word;
    cout << "Введите строку:" << endl; //Введите строку.
    getline(cin, line);
    line += ' ';
    cout << "Введите слово:" << endl; //Введите слово.
    getline(cin, word);
    vector<string> words;
    string str = "";
    for (unsigned int i = 0; i < line.size(); i++)
    {
        if (line[i] != ' ')
        {
            str += line[i];
        }
        else {
            words.push_back(str);
            str = "";
        }
    }
    unsigned int maxSize = 0;
    for (unsigned int i = 0; i < words.size(); i++)
    {
        if (words[i].size() > maxSize)
        {
            maxSize = words[i].size();
        }
    }
    line = "";
    for (unsigned int i = 0; i < words.size(); i++)
    {
        if (words[i].size() == maxSize)
        {
            words[i] = word;
        }
        line += words[i] + ' ';
    }
    cout << "Новая строка:" << endl << line << endl; //Вывод новой строки.
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.09.2015, 22:24
Ответы с готовыми решениями:

Иероглифы в выводе и капризный SET_LOCALE
Здравствуйте, форумчане! Изучаю я СиПлюПлюс по книжке дяди Шилдта. Есть тут...

Кирилица отображается нормально при выводе из программы, но иероглифы при вводе в консоль
Что надо подключить что бы в консоли писать русскими буквами? cin &gt;&gt; kol;...

Выводит иероглифы
Есть массив строк, заполняю его нужной инф. и вывожу. string ans = {...

RSA - иероглифы
Привет всем! Возникла проблема. Есть программа на RSA (честно, помогали люди) -...

Иероглифы после CharToOemA
Подскажите, почему после казалось бы простейшей операции в &quot;buf&quot; оказываются...

4
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
27.09.2015, 23:00 2
Лучший ответ Сообщение было отмечено Benzema как решение

Решение

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
    #include <algorithm>
//...
    setlocale(LC_CTYPE, "Russian");
    string line;
    string word;
    cout << "Введите строку:" << endl; //Введите строку.
    getline(cin, line);
 
    vector<char> tmp(line.length());
    std::copy(line.begin(), line.end(), tmp.begin());
    tmp.push_back('\0');
    OemToCharA(tmp.data(), tmp.data());
    std::copy(tmp.begin(), tmp.end() - 1, line.begin());
 
    line += ' ';
    cout << "Введите слово:" << endl; //Введите слово.
    getline(cin, word);
 
    tmp.resize(word.length());
    std::copy(word.begin(), word.end(), tmp.begin());
    tmp.push_back('\0');
    OemToCharA(tmp.data(), tmp.data());
    std::copy(tmp.begin(), tmp.end() - 1, word.begin());
 
    vector<string> words;
//...
1
Benzema
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 58
27.09.2015, 23:11  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
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
    #include <algorithm>
//...
    setlocale(LC_CTYPE, "Russian");
    string line;
    string word;
    cout << "Введите строку:" << endl; //Введите строку.
    getline(cin, line);
 
    vector<char> tmp(line.length());
    std::copy(line.begin(), line.end(), tmp.begin());
    tmp.push_back('\0');
    OemToCharA(tmp.data(), tmp.data());
    std::copy(tmp.begin(), tmp.end() - 1, line.begin());
 
    line += ' ';
    cout << "Введите слово:" << endl; //Введите слово.
    getline(cin, word);
 
    tmp.resize(word.length());
    std::copy(word.begin(), word.end(), tmp.begin());
    tmp.push_back('\0');
    OemToCharA(tmp.data(), tmp.data());
    std::copy(tmp.begin(), tmp.end() - 1, word.begin());
 
    vector<string> words;
//...
Спасибо большое! Извините за глупый вопрос, но как правильно объяснить, что Вы сделали?
0
nmcf
6515 / 5744 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
27.09.2015, 23:19 4
Перекодировка из 866 в 1251.
1
Benzema
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 58
27.09.2015, 23:31  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
Перекодировка из 866 в 1251.
спасибо Вам еще раз!
0
27.09.2015, 23:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2015, 23:31

Выводит из файла иероглифы
Здравствуйте! Программа должна запрашивать: ФИО, курс обучения, специальность и...

Иероглифы в MV C++ 2008 express
День добрый! Собственно вот: http://rghost.ru/41562218.view . Как исправить?

MessageBox выводит иероглифы
MessageBox(NULL, reinterpret_cast&lt;LPCTSTR&gt;(&quot;Hello world&quot;),...


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

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

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