Страница 1 из 1
Заполнение вектора из файла
Добавлено: 27 май 2010, 21:06
Yura_ua
Всем здравствуйте. Есть задача: считать данные из файла и записать их в вектор. Вот, что у меня получилось:
Код: Выделить всё
void __fastcall TForm1::FormCreate(TObject *Sender)
{
vector<Gas> v;
Gas s;
ifstream fin("station.db",ios_base::in |
ios_base: :o ut);
while(!fin.eof())
{
fin>>s.name.c_str()>>s.pass.c_str();
fin>>s.temperature>>s.pressure;
v.push_back(s);
}
fin.close();
}
но в векторе все равно ничего нет. Подскажите пожалуйста, в чем ошибка?
Re: Заполнение вектора из файла
Добавлено: 27 май 2010, 21:53
BulldozerBSG
Честно говоря непонятно что из себя представляет Gas, это раз. Второе замечание это что: fin>>s.name.c_str()>>s.pass.c_str();
я так понимаю name и pass это std::string? тогда правильно будет fin>>s.name>>s.pass;
Re: Заполнение вектора из файла
Добавлено: 27 май 2010, 21:57
BulldozerBSG
Да и что мешает использовать отладчик? Пошагово трассировать участки кода. И выяснить что должно было выполниться а не выполнилось или выполнилось не так как ожидалось.
Re: Заполнение вектора из файла
Добавлено: 28 май 2010, 16:16
Yura_ua
Gas это:
Код: Выделить всё
class Gas
{
public:
String name;
String pass;
float temperature;
float pressure;
float volume;
public:
Gas(){};
Gas (String name, String pass, float t, float p, float v)
{
this->name = name;
this->pass = pass;
this->temperature = t;
this->pressure = p;
this->volume = v;
}
и если использовать fin>>s.name>>s.pass; то C++ Builder 6 выдает ошибку
[C++ Error] Unit1.cpp(55): E2094 'operator>>' not implemented in type 'ifstream' for arguments of type 'AnsiString'
Да, и отладчик использовал, не выполняется именно код, написанный в первом посте, то есть вектор v так и остается пустой
Re: Заполнение вектора из файла
Добавлено: 28 май 2010, 16:25
Yura_ua
Да, и еще, может ли проблема быть в
Код: Выделить всё
ifstream fin("station.db",ios_base::in | ios_base: :o ut);