Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/103: Рейтинг темы: голосов - 103, средняя оценка - 4.86
3 / 3 / 4
Регистрация: 18.11.2013
Сообщений: 172

Getline и кириллица

17.02.2017, 17:21. Показов 25217. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть
C++
1
string name;
, проблема следующая...работаю с CURL. Формирую POST-запрос, где имеется параметр name. Так вот, если с клавиатуры ввести английское название, то все ок, запрос отправляется исправно.

Но если ввести русское название, то приходит ответ, будто я ничего не вводил вообще.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2017, 17:21
Ответы с готовыми решениями:

Подсчитать количество вхождений буквы (кириллица) в строку (кириллица)
Суть такая: по требованию программы ввести строку символов (обыкновенный текст, кириллица(!!!)) и посчитать количество вхождений, если...

Отличие getline() от cin.getline()
Чем отличается getline() от cin.getline() ?

Объясните разницу между "cin.getline" и "std::getline"
string a; cin.getline(a); getline(cin, a);в чем разница между "cin.getline(a);" и "getline(cin, a);"

31
3 / 3 / 4
Регистрация: 18.11.2013
Сообщений: 172
17.02.2017, 21:11  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от nd2 Посмотреть сообщение
C++
1
2
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Да, я уже добавил вторую строку, отображается норм с ней, но проблема осталась

Добавлено через 1 минуту
Цитата Сообщение от sys_beginner Посмотреть сообщение
То есть здесь нужно четко знать чего требует сервер, и сформировать запрос в соответствии с его требованиями.
Возможно глупый вопрос, но все же: как можно это узнать?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
17.02.2017, 21:23
utf-8 пробуй отправлять. Ну а так, посмотри в каком виде данные идут через браузер.
0
3 / 3 / 4
Регистрация: 18.11.2013
Сообщений: 172
17.02.2017, 21:37  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
utf-8 пробуй отправлять. Ну а так, посмотри в каком виде данные идут через браузер.
SetConsoleCP(1252);

Отправился запрос, но на сервере сохранился вот так: ??????. Уже близко
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
18.02.2017, 02:26
b00006, вы мой код пробовали? У меня в итоге текст записывается в формате UTF-8
0
3 / 3 / 4
Регистрация: 18.11.2013
Сообщений: 172
18.02.2017, 08:55  [ТС]
Цитата Сообщение от MrGluck Посмотреть сообщение
b00006, вы мой код пробовали? У меня в итоге текст записывается в формате UTF-8
пробовал, не помогло
0
1 / 1 / 0
Регистрация: 28.02.2015
Сообщений: 28
05.12.2021, 02:17
Весьма актуально, столкнулся с такой же проблемой.
Почему-то метод
C++
1
getline();
Записывает крякозябру.
C++
1
2
3
4
5
6
7
8
9
10
11
getline(cin, s);
    int len; 
    len = s.size();                     
    s1 = s;
 
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    for (int i = 0; i < len; i++)
    {
        cout << s1[i];
    }
После
C++
1
2
SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
//текст отобразился нормально, но при сравнении букв через if записывает внутри все равно крякозябру (прошелся пошаговым, фраза "Привет, мир" записывается как "ЏаЁўҐв, ¬Ёа!"
Как исправить данную проблему?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.12.2021, 09:08
С какой проблемой? SetConsole...() ставится в самом начале main().
0
1 / 1 / 0
Регистрация: 28.02.2015
Сообщений: 28
05.12.2021, 15:47
Я пробовал и SetConsoleCP(866); SetConsoleOutputCP(866) и вначале, и в конце и перед вводом, аналогично с 1251.
setlocale(LC_ALL, "Russian"); комментировал, удалял, менял на setlocale(LC_ALL, "russian_Russia.866") /setlocale(LC_ALL, "russian_Russia.1251") - результат тот же
Менял шрифт в консоле - все без толку.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
05.12.2021, 15:53
Внятно объясни. Ты вводишь что-то через getline() и там не та кодировка получается? Какая среда?
0
1 / 1 / 0
Регистрация: 28.02.2015
Сообщений: 28
05.12.2021, 15:56
Блин, спасибо огромное, странно, до этого пробовал, почему-то не работало, мб манипуляция с шрифтами консоли помогла.
В итоге связка
C++
1
2
3
4
5
6
7
int main()
{
setlocale(LC_ALL, "Russian");
   SetConsoleCP(1251);
   SetConsoleOutputCP(1251);
...
}
отработала нормально, и текст внутри записался русский. Спасибо!
0
0 / 0 / 0
Регистрация: 10.03.2022
Сообщений: 5
15.03.2022, 22:01
подскажите как отобразить русские буквы в данном коде?
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
#include <fstream>
#include <iostream>
#include <conio.h>
#include <string>
#include <time.h>
#include <Windows.h>
#pragma warning(disable : 4996)
using namespace std;
 
char* change(string s)
{
    char* arr=new char[s.size()+1];
    strcpy(arr, s.c_str());
    return arr;
}
 
int main()
{
    setlocale(LC_ALL, "");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);   
    fstream f("txt.txt", ios::in | ios::out | ios::app);
    if (!f) {
        cout << "Файл не открылся для чтения !!!";
        exit(1);
    }
    else cout << "файл открыт" << endl;
    string str;
    getline(f, str);
    cout << str << endl;
    while (!f.eof())
    {
        getline(f, str);
        cout << str << endl;
    }       
    f.close();
0
Модератор
 Аватар для long399
2886 / 1848 / 933
Регистрация: 16.10.2013
Сообщений: 5,252
Записей в блоге: 15
16.03.2022, 06:07
r141d, попробуйте использовать wfstream, wstring, wgetline, wcout вместо аналогичных им в вашем коде.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.03.2022, 06:07

Getline() "съедает" следующий getline()
Всем привет! Пишу небольшое консольное приложение. Идея такова: в карточке пользователя библиотеки храниться информация о книгах. Вот...

getline
Вот отрывок кода: cout &lt;&lt; &quot;Введите тел. работодателя: &quot;; cin.getline(Mobile, 30); group.setMob(Mobile); cout...

getline
Я считываю число из входного потока, но дальше из входного потока уже не могу считать строку. Его надо очищать что ли? #include...

Getline си++
Подскажите пожалуйста, в чем причина неправильной работы кода? while(file.getline(name_file, 4, '=')) { ...

Getline() c++
Блин, уже решил не редактировать прошлую тему. Вот отрывок из прошлого кода: void WriteIn(fstream&amp; obj) { string msg; ...


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

Или воспользуйтесь поиском по форуму:
32
Ответ Создать тему
Новые блоги и статьи
Расчёт периметра прямоугольника по координатам вершин
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить периметр прямоугольника, заданного координатами своих вершин на плоскости. Решение: Создан документ со следующими. . .
Подсчёт частоты трёхбуквенных слов в тексте
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Выясните, сколько раз в предложенном тексте встречается каждое трехбуквенное слово. Решение: Создан документ с единственным. . .
Сумма и количество положительных элементов в чётных строках массива
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Вычислить сумму и количество положительных элементов массива, расположенных в четных строках. Решение: Создан документ с. . .
Поиск произведения положительных чётных чисел в последовательности
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Дана произвольная последовательность целых чисел. Найти произведение положительных четных чисел данной последовательности. . . .
Обработка трёх чисел: утроение и возведение в степень
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Даны три действительных числа. Утроить те из них, значения которых неотрицательны, и возвести в четвертую степень отрицательные. . . .
Расчёт стоимости яблок по весу
Maks 18.07.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Написать программу вычисления стоимости некоторого количества (по весу) яблок. Решение: Создан документ, с табличной частью. . .
сукцессия 30. Фосфорный и азотный замки по "честному" закону лимитирования Либиха
anaschu 16.07.2026
Основные достижения за последние дни 1. Механизм отложенного высвобождения фосфора Добавлен специальный пул для медленного разложения меланизированных гиф ЕСМ Реализована разная скорость. . .
Запрет пометки на удаление и отмены проведения
Maks 16.07.2026
Алгоритм из решения ниже реализован на нетиповом документе "ПутевойЛист" разработанного в КА2. Задача: запретить помечать на удаление и отменять проведения путевого листа при условии, если он сдан. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru