| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Работа со строками содержащами байт x00 |
| Автор: fire64 18.10.2008, 16:36 | ||
Код у меня конечно другой, но это ничего не меняет
в результате строка обрывается там где встречается байт x00 |
| Автор: Sartorius 18.10.2008, 16:44 |
| fire64, чего же ты хочешь ? так и должно быть - C работает с z - строками. Не нравится ноль как терминатор строки - пиши свои функции для работы со своим форматом строк |
| Автор: fire64 18.10.2008, 17:21 |
| и что в C++ нет абсолютно никаких методов для работы с такими строками ? |
| Автор: fire64 18.10.2008, 18:08 | ||
| Mayk, нефига не работает к тому коду что в первом посте добавил std::string new_str( text); printf ("%s", new_str); для того что бы вывести на экран строку с x00 пришлось написать этот кошмарный код
но вот теперь вопрос, как преобразовать "%c", text[i] в единую строку ? |
| Автор: vinter 18.10.2008, 18:56 | ||
|
| Автор: fire64 18.10.2008, 19:07 | ||||||
и в результате блин опять обрезается на первом x00 байте как я уже говорил единственный способ вывода полной строки это
что бы справиться с мой проблемой надо каким-то образом, объединить все "%c", text[i] в одну строку иначе строка будет обрезаться |
| Автор: 586 18.10.2008, 19:58 | ||
|
| Автор: fire64 18.10.2008, 20:34 | ||
| и в результате вместо текста из text я получай вот это
|
| Автор: J0ker 18.10.2008, 21:25 | ||
у меня выводит
что совершенно правильно у вас библиотеки какие-то кривые... |
| Автор: fire64 19.10.2008, 22:18 | ||||
дело не в этом просто у меня прога с сокетами размер буфера составляет 2048 но не факт, что пакет помещённый в буфер будет иметь именно этот размер |
| Автор: J0ker 20.10.2008, 00:30 |
| тогда вы неправильно поставили нам задачу буфер это буфер, а строка это строка - не надо их мешать в кучу принимаете буфер, потом парсаете не забудьте только, что если у вас TCP то пакеты могут по дороге фрагментироваться а если UDP - то доставка и последовательность не гарантированны. |
| Автор: Earnest 20.10.2008, 14:52 | ||
| Все уже тебе написали. Вот здесь уже обрезается, и не поможет тебу string, т.к. при конструировании принимается именно z-cтрока. Если ты знаешь n, то зачем тебе строки? Работай с байтами и не морочь голову.
Значит, должен быть способ определения размера пакета, и никак не по 0-символу. |
| Автор: J0ker 20.10.2008, 18:40 | ||||
там дальше конструктор от двух итераторов (поинтеров) - так ничего не обрезается |
| Автор: Earnest 20.10.2008, 18:48 |
| А, в чьем-то примере? Да, не заметила. Но вопрос не в этом: да, можно засунуть это в string - только зачем? |
| Автор: J0ker 20.10.2008, 18:52 |
| это не ко мне вопрос |