![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| fire64 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Код у меня конечно другой, но это ничего не меняет
в результате строка обрывается там где встречается байт x00 |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
fire64, чего же ты хочешь ? так и должно быть - C работает с z - строками. Не нравится ноль как терминатор строки - пиши свои функции для работы со своим форматом строк
|
|||
|
||||
| fire64 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
и что в C++ нет абсолютно никаких методов для работы с такими строками ?
|
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
std::string Добавлено через 13 секунд он не использует \0 как терминатор строки. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| fire64 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
Mayk, нефига не работает
к тому коду что в первом посте добавил std::string new_str( text); printf ("%s", new_str); для того что бы вывести на экран строку с x00 пришлось написать этот кошмарный код
но вот теперь вопрос, как преобразовать "%c", text[i] в единую строку ? Это сообщение отредактировал(а) fire64 - 18.10.2008, 19:08 |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
|
|||
|
||||
| fire64 |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
и в результате блин опять обрезается на первом x00 байте как я уже говорил единственный способ вывода полной строки это
что бы справиться с мой проблемой надо каким-то образом, объединить все "%c", text[i] в одну строку иначе строка будет обрезаться |
||||||
|
|||||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
|
|||
|
||||
| fire64 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
и в результате вместо текста из text
я получай вот это
Это сообщение отредактировал(а) fire64 - 18.10.2008, 20:36 |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
у меня выводит
что совершенно правильно у вас библиотеки какие-то кривые... |
|||
|
||||
| fire64 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 18.7.2007 Репутация: нет Всего: нет |
дело не в этом просто у меня прога с сокетами размер буфера составляет 2048 но не факт, что пакет помещённый в буфер будет иметь именно этот размер |
||||
|
|||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
тогда вы неправильно поставили нам задачу
буфер это буфер, а строка это строка - не надо их мешать в кучу принимаете буфер, потом парсаете не забудьте только, что если у вас TCP то пакеты могут по дороге фрагментироваться а если UDP - то доставка и последовательность не гарантированны. |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Все уже тебе написали.
Вот здесь уже обрезается, и не поможет тебу string, т.к. при конструировании принимается именно z-cтрока. Если ты знаешь n, то зачем тебе строки? Работай с байтами и не морочь голову.
Значит, должен быть способ определения размера пакета, и никак не по 0-символу. -------------------- ... |
|||
|
||||
| J0ker |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 4 Всего: 14 |
||||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
А, в чьем-то примере? Да, не заметила. Но вопрос не в этом: да, можно засунуть это в string - только зачем?
-------------------- ... |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |