| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > AnsiString в бинарный файл |
| Автор: Gleb 11.7.2005, 15:46 |
| Уважаемые, облазил почти все - нигде не нашел, как AnsiString сохранять и читать из бинарного файла с помощью ifstream и ofstream. Возможно ли такое в принципе? Пробовал приводить к массиву символов, но появляется мусор на месте последнего символа в читаемой строке, да и сохраняется не в бинарном виде. |
| Автор: Дрон 11.7.2005, 16:02 | ||
| Gleb Этот вопрос нужно в раздел по C++ Builder писать. Но насколько я помню такой возможности там нет.
А в каком ещё виде оно может сохраняться? |
| Автор: Gleb 11.7.2005, 16:16 |
| тогда хоть подскажите какой-нибудь метод не низкоуровневый попроще. Буду очень признателен. Дрон, если приводить к массиву символов, то сохраняется в обычном текстовом виде, по крайней мере так происходит у меня |
| Автор: Earnest 11.7.2005, 16:27 |
| А что такое AnsiString? Это не массив байтов по сути? Для анси-символов что "обычный текстовый" вид, что бинарный - разве что символ конца строки будет другой... А вы, случайно, не в текстовом режиме ifdtream и ofstream открываете? |
| Автор: Gleb 11.7.2005, 16:44 |
| нет, открываю с ios::binary |
| Автор: vadims 11.7.2005, 16:48 |
| метод c_str() формирует из AnsiString массив типа char те copy(buf, Str.c_str() ); получил из AnsiString Str -> char buf[] единственное что надо подумать о размере буфера - например buf = new(Str.Length) |
| Автор: Дрон 11.7.2005, 16:59 |
| vadims А strcpy уже отменили? |
| Автор: ДмитрийПП 11.7.2005, 17:03 | ||
Где Caption - AnsiString заголовок окна. Просто используй функцию c_str(). Прочитать тоже не очень сложно. |
| Автор: Gleb 11.7.2005, 17:24 | ||
В итоге 11 байт и строчка "Hello World" |
| Автор: vadims 11.7.2005, 17:35 |
| Дрон Ну перегрелся я Gleb Если тебе надо просто записать- можно еще проще, без буферов и копирований AnsiString str = "Hello World"; ofstream file("data.db",ios::binary); file.write(str.c_str(),sizeof(char)*str.Length()); file.close(); |
| Автор: Vyacheslav 11.7.2005, 18:14 |
| А чем не устроили операторы AnsiString << и >> ? |