Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,153
#1

Функции для работы с типом char* - C++

28.12.2016, 01:21. Просмотров 420. Ответов 20
Метки нет (Все метки)

Здравствуйте! Подскажите ресурс, где описана реализация основных функции для работы с указателями на строки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.12.2016, 01:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Функции для работы с типом char* (C++):

Библиотека для удобной работы с типом string с++ - C++
Привет, надо проводить много манипуляций со строками - обрезка, перенос строки, выравнивание - для интерфейса 3D-игры. Есть ли готовая...

Преобразовать массив с типом char в массив с типом int - C++
Что-то не получается у меня найти инфу именно с преобразованием массивов с char в int. Нахожу только преобразование с числами. ...

В чем разница между типом функции и типом возвращаемого значения? - C++
Читаю статью https:// code-live. ru/post/cpp-functions/ (ссылку изменил дабы не делать рекламу) Там написано - Любая функция...

Класс для работы со скалярным типом данных в стиле языка Перл - C++
помогите пожалуйста создать класс для работы со скалярным типом данных в стиле языка Перл. Класс должен быть прозрачен сточки зрения число,...

Ошибка с типом char - C++
При запуске выдает ошибки связанные с char. На другой версии visual все работало сразу. Не понимаю как исправить их. Ошибки выделены в...

Работа с типом char - C++
Пожалуйста, помогите понять разницу между этими записями: char a; char *a; char *a; char a;

20
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,006
28.12.2016, 09:13 #2
http://ru.cppreference.com/w/cpp/string/byte
http://www.cplusplus.com/reference/cstring/
0
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,153
28.12.2016, 10:43  [ТС] #3
nd2
Я имел ввиду не перечень функций и что они делают, а как такие функции сделаны
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,006
28.12.2016, 10:56 #4
Эту тему почитай: Как посмотреть реализацию функций STL?
1
V2oD2o
1 / 1 / 0
Регистрация: 14.10.2014
Сообщений: 67
28.12.2016, 11:02 #5
Раз такая пьянка низкоуровневая, тогда может быть подскажешь?
есть 2 массива, один в виде:
C++
1
char request[5] = { '\x81', '\x10', '\xF1', '\x81', '\x03' };
другой ввиде уже самих символов (байтов).. как их сравнить? strcmp сходства не видит

суть в том что один массив формируется из HEX значений - для визуального удобства создания запросов, а второй массив это уже ответ от устройства - именно байтами

и соответственно длина запроса strlen = 13 (запрос 12 + 1 \0 ?), ответ strlen = 5
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,006
28.12.2016, 11:04 #6
Цитата Сообщение от Helldrg Посмотреть сообщение
а как такие функции сделаны
https://github.com/lattera/glibc/tree/master/string
1
Helldrg
26 / 55 / 1
Регистрация: 10.01.2011
Сообщений: 1,153
28.12.2016, 11:04  [ТС] #7
nd2 Спасибо большое!!! Если найдете еще, что нибудь подобное напишите, пожалуйста
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,006
28.12.2016, 11:12 #8
Цитата Сообщение от V2oD2o Посмотреть сообщение
и соответственно длина запроса strlen = 13 (запрос 12 + 1 \0 ?), ответ strlen = 5
И что сравнить хочешь? Первые пять символов из запроса? Или что?
0
V2oD2o
1 / 1 / 0
Регистрация: 14.10.2014
Сообщений: 67
28.12.2016, 11:17 #9
Цитата Сообщение от nd2 Посмотреть сообщение
И что сравнить хочешь? Первые пять символов из запроса? Или что?
в запросе их всего 5, в ответе 12, но сравнить надо с первыми 5

т.е. 2 массива - в теории - одинаковых, не равны друг другу, т.к. в одном данные в виде (первый байт) "\x81" в другом в виде символов (первый байт) - "Б"
0
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
28.12.2016, 11:18 #10
Цитата Сообщение от V2oD2o Посмотреть сообщение
как их сравнить?
std::memcmp
1
V2oD2o
1 / 1 / 0
Регистрация: 14.10.2014
Сообщений: 67
28.12.2016, 11:24 #11
Цитата Сообщение от DrOffset Посмотреть сообщение
в десяточку, сработало, спасибо
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,006
28.12.2016, 11:27 #12
Цитата Сообщение от V2oD2o Посмотреть сообщение
т.к. в одном данные в виде (первый байт) "\x81" в другом в виде символов (первый байт) - "Б"
В любом случае коды сравниваются, как этот код выглядит - без разницы.
0
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
28.12.2016, 11:31 #13
nd2, я думаю, его проблема была в том, что один из буферов (или оба) не содержали нуль-символа. В этом случае strcmp пойдет гулять за пределы буфера и ничего хорошего не сравнит
0
V2oD2o
1 / 1 / 0
Регистрация: 14.10.2014
Сообщений: 67
28.12.2016, 11:34 #14
Цитата Сообщение от DrOffset Посмотреть сообщение
nd2, я думаю, его проблема была в том, что один из буферов (или оба) не содержали нуль-символа. В этом случае strcmp пойдет гулять за пределы буфера и ничего хорошего не сравнит
т.е. верный подход будет так выглядеть?
C++
1
char startCommunication[6] = { '\x81', '\x10', '\xF1', '\x81', '\x03', '\0' };
0
nd2
2821 / 2391 / 851
Регистрация: 29.01.2016
Сообщений: 8,006
28.12.2016, 11:35 #15
Цитата Сообщение от DrOffset Посмотреть сообщение
я думаю, его проблема была в том, что один из буферов (или оба) не содержали нуль-символа. В этом случае strcmp пойдет гулять за пределы буфера и ничего хорошего не сравнит
DrOffset, это я всё понял. Я написал насчёт его неправильных рассуждений: что от того как выглядят коды зависит результат сравнения.
Цитата Сообщение от V2oD2o Посмотреть сообщение
2 массива - в теории - одинаковых, не равны друг другу, т.к. в одном данные в виде (первый байт) "\x81" в другом в виде символов (первый байт) - "Б"
0
28.12.2016, 11:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.12.2016, 11:35
Привет! Вот еще темы с ответами:

Строки с типом char * в С++ - C++
Помогите написать программу по строкам c++ При написании программ использовать нуль–терминированные строки и работать только с типом...

Действия над типом Char - C++
Как узнать сколько содержит сиволов, пустая ли она, содержит ли одни буквы переменная N: ///Подключение библиотек ... char N; ...

Структурка (удалить данные с типом char) - C++
Привет всемм!!! Нужно было мне написать структурку для стадиона а также удалить "Удалить элемент с заданным названием." Название имеет...

Как перегрузить поле с типом Char - C++
нужна перегрузка сложения в классе int o; char *gr; вот если интовское поле было то пишу Text Text::operator+(Text...


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

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

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