![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
skrip |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 3.8.2006 Репутация: нет Всего: нет |
можно в текстовый файл записать строку с помощью
write(), так чтобы потом было понятно, что написано просмотрев ,например, в vi. записываю так
в итоге в файле написано: ^T| ^D^H^@^@^@^@^@^@ чтобы записывалось понятно делаю так
как нибудь подругому можно записать строку (не посимвольно) через write(); |
||||
|
|||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
вместо &st пиши st.c_str(): ты берешь адрес объекта, а тебе нужен адрес строки - это не одно и то же.
-------------------- ... |
|||
|
||||
skrip |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 3.8.2006 Репутация: нет Всего: нет |
а почему тогда если потом эту абра кадабру прчитать с помощью read((char*)&st, 512) на консоли то что надо.
Эта защифрованность случайно никак не связана с тем что write() и read() работают с бинарными файлами Добавлено @ 09:01 Кстати, чем бинарный файл отличается от текстового? |
|||
|
||||
Sunr1se |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 1.5.2006 Репутация: 1 Всего: 13 |
--------------------
IRC-канал Винграда |
|||
|
||||
MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 52 Всего: 207 |
Добавлено @ 09:14
ты вообще неправильно читаешь и записываешь читай пост Earnest -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Это не зашифрованность, просто буфер строки вовсе не обязан совпадать с началом объекта.
То, что при чтении (симметричном, заметь!) у тебя получилось "то, что надо" - чистая случайность. Скорее всего, ты имеешь дело с такой реализацией string, где небольшой буфер для коротких строк включен в тело объекта string. А если бы буфер всегда выделялся динамически, или строка была длинная - никакого "то, что надо" не вышло бы. В твоей ситуации, основная разница между текстовыми и бинарными файлами - это определение конца строки. В текстовых файлах - это обычно завершающий символ (\n или пробел-табуляция), до которого читают стандартные функции чтения строк. А в бинарном файле ты должен позаботиться о том, чтобы информация о длине строки была доступна. Обычно длину записывают перед записью буфера, но возможны варианты. И вообще, прежде чем что-то писать, подумай о том, как ты (или кто-то другой) будешь это читать: т.е. при записи ты должен предоставить достаточно информации для последующего чтения и восстановления объекта. -------------------- ... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |