Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
4 / 4 / 3
Регистрация: 10.06.2015
Сообщений: 20
1

Хранение символов в char

18.06.2015, 17:59. Показов 3168. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте. Возникла проблема с хранением кириллицы. Пишу графическое приложение и обрабатываю ввод с клавиатуры на прямую, без sdl или glut. Опытным путем установил, что буква "в" в памяти хранится как 0xD0 0xB2, "г" 0xD0 0xB3 и т.д. При нажатии соответствующей клавиши пихал байты в string таким образом. А вот при попытке обратиться к первому байту получал уже не то, что туда запихал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    char a[6];
 
    a[0] = 208;
    a[1] = 180;
    a[2] = 208;
    a[3] = 181;
    a[4] = 208;
    a[5] = 182;
    a[6] = 0;
    
    string s = a;
    s += a;
    cout << s << endl; //деждеж
    cout << (int)s[4] << endl; //-48
    cout << (int)(s.c_str()[4]) << endl; //-48
Почему -48? Как оно там поменялось? Для того чтобы удалить символ из строки мне нужно знать сколько байт он занимает. Понять это можно по первому байту 208.
Хотелось бы увидеть ответ человека который в этом разбирается. И вообще буду раз советам по организации мультиязычного ввода с клавиатуры без сторонних библиотек.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2015, 17:59
Ответы с готовыми решениями:

Снова MySql и хранение русских символов
Люди! Как сделать, чтобы масикл корректно хранил русские символы(как русские символы, а не...

Выполнить сортировку символов в строке. Порядок возрастания "весов" символов задать таблицей вида char ORD[] = "АаБбВ
Выполнить сортировку символов в строке. Порядок возрастания &quot;весов&quot; символов задать таблицей...

Класс строка текста(хранение и извлечение символов) Стандарт C++ 2011
Добрый день. Нужно реализовать класс &quot;строка текста&quot;. Хранение символов должно быть в UTF-16, а...

Сравнение массива символов char
День добрый. Пытаюсь сделать так: char nomer,nomer2; //Тут по ходу выполнения программы...

2
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
18.06.2015, 18:12 2
glGetError, во-первых, у тебя выход за границы массива. Элементов 6, а используешь 7 [0..6].
Во-вторых, попробуй так:
C++
1
cout << (int)(unsigned char)(s.c_str()[4]) << endl; //208
P.S. Почитай про кодировки для общего развития.
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.06.2015, 18:35 3
Цитата Сообщение от glGetError Посмотреть сообщение
Почему -48? Как оно там поменялось?
потому что на вашей платформе char - знаковый тип: -128 ; 128
0
18.06.2015, 18:35
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.06.2015, 18:35
Помогаю со студенческими работами здесь

Замена символов в массиве char
Всем привет! Задача: исходная строка (char) содержит числа десятичной системы счисления. Найти их,...

Количество символов в const char*
Я посылаю в функцию строку fun(&quot;text&quot;); функция выглядит так: fun(const char* in) {...} Как...

Соединение двух символов char
Здравствуйте, Подскажите пожалуйста, как сложить объединить два символа char: string...

Не выводится массив символов (char)
В названии тома и в Файловой системе выводятся непонятные символы. По ходу это связано с чаровскими...

Некорректный вывод символов (char)
Что написал: public class TestChar { public static void main(String args) { int del...

не выводится Массив символов (char)
в названии тома и в Файловой системе выводятся непонятные символы. Это по ходу связано с чаровским...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru