3 / 3 / 4
Регистрация: 18.11.2013
Сообщений: 172

Getline и кириллица

17.02.2017, 17:21. Показов 25302. Ответов 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,254
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru