fstream c++ проблемка в билдере

программирование с++ builder

iBase - указатель на fstream;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
iBase = new fstream;
SaveDialog1->Execute();
iBase->open(SaveDialog1->FileName,ios::binary|ios::out);
TRecord iRec;
for (int i = 0; i < 10; i++) {
iRec.Name = table->Cells[0][i];
iRec.Family = table->Cells[1][i];
iBase->write((char*)iBase,iSize);
}
iBase->close();
}

iBase->open(SaveDialog1->FileName,ios::binary|ios::out); тут компилятор ругается, что SaveDialog1->FileName тип AnsiString а ему нужен string, это то понятно, а чё с этим делать?

Примечание:
Смотрите название вопроса "билдер" => C++ Builder в данном случае 2007 версия

Я дурак нашел решение сам
iBase->open(SaveDialog1->FileName.c_str(),ios::binary|ios::out);

и все заработало

Примечание:
Одно не пойму работаю с укаателями но перед c.str используется точка, почему?
Ответы:
в какой среде пишете?
покопайтесь настройках, измените кодировку. видно что не совпадают кодировки символов вашего проекта и библиотеки fstream
Да-да. Нужно было сразу погуглить на тему c_str(). Функция на выходе выдает массив чаров. А как известно стринг из массива чаров формируется идеально :).
Дополнение #2, FileName в вашем случае поле класса SaveDialog, которое не является указателем (т.е имеет тип AnsiString, не AnsiString* !)


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.