Witam.
W moim projekcie chciałem dodać 2 przyciski w menu, odpowiednio dla zapisu pewnego wektora do pliku .txt, a potem do analogicznego wczytania z pliku tych danych do niego. Wektor typu string, tylko że zapisywanie do pliku nie działa, prawdopodobnie przez to, że operator "<<" nie został zaimplementowany dla argumentów typu AnsiString. Próbowałem rzutować na typ string, ale uparcie nie chciał działać, więc spróbowałem zaimplementować te operatory samodzielnie. Teraz wyświetla mi tylko "syntax error".
Pierwotny kod ([C++ Error] _stream_iterator.h(174): E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'AnsiString'; błąd wyrzuca gdzieś w połowie biblioteki iterator.h, tam gdzie jest "<<"):
void __fastcall TForm1::Save1Click(TObject *Sender)
{
std::FILE *filesave;
if(SaveDialog1->Execute())
{
filesave = std::fopen(SaveDialog1->FileName.c_str(), "w");
//std::vector<String> t_char;
std::ofstream output_file("./steps.txt");
std::ostream_iterator<String> output_iterator(output_file, "\n");
std::copy(t_char.begin(), t_char.end(), output_iterator);
if(filesave == NULL)
{
ShowMessage("There was an error with saving the file!");
return;
}
}
std::fclose(filesave);
}
Potem spróbowałem właśnie przypisać operator do typu zmiennej (z odpowiednimi zmianami w kodzie zapisywania):
ostream& operator<<(ostream& __stream, AnsiString const& _str)
{
__stream << _str.c_str();
return __stream;
}
Ale tu wysypuje mi syntax error, a ja już nie widzę co tam mogłoby być źle. Ktoś z was ma jakiś pomysł?