Ден |
Отправлено: 15.11.2005, 21:28 |
|
Не зарегистрирован
|
Как загрузить файл в вектор ?
А как сохранить вектор в файл ? |
|
exp |
Отправлено: 15.11.2005, 22:48 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Для начала определимся с акцентом
"как ЗАГРУЗИТЬ файл в вектор" или "Как загрузить файл В ВЕКТОР"?
Если вариант 1, то FileRead(), если вариант 2 то vector::push_back().
|
|
Ден |
Отправлено: 16.11.2005, 00:36 |
|
Не зарегистрирован
|
QUOTE (exp @ 15/11/2005, 22:48) | Для начала определимся с акцентом
"как ЗАГРУЗИТЬ файл в вектор" или "Как загрузить файл В ВЕКТОР"?
Если вариант 1, то FileRead(), если вариант 2 то vector::push_back(). |
push_back() добавляет новый элемент ?
Это выходит список надо построчно добавлять в вектор for ом ?
А во что его тогда грузить чтобы различать элементы ? |
|
Ден |
Отправлено: 16.11.2005, 00:46 |
|
Не зарегистрирован
|
Если всетаки добавлять элементы фором , то куда грузить текстовый список ? |
|
Георгий |
Отправлено: 16.11.2005, 01:19 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
QUOTE (Ден @ 16/11/2005, 01:46) | Если всетаки добавлять элементы фором , то куда грузить текстовый список ? |
вектор чего загружаем? вектор строк? |
|
я так думаю что строк |
Отправлено: 16.11.2005, 01:32 |
|
Не зарегистрирован
|
QUOTE (Георгий @ 16/11/2005, 01:19) | QUOTE (Ден @ 16/11/2005, 01:46) | Если всетаки добавлять элементы фором , то куда грузить текстовый список ? |
вектор чего загружаем? вектор строк? |
я так думаю текстовый список это вектор строк |
|
Gedeon |
Отправлено: 16.11.2005, 13:52 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (Ден @ 15/11/2005, 21:28) | Как загрузить файл в вектор ?
А как сохранить вектор в файл ? |
Каждому лектору в жопу по вектру.
|
|
Ден |
Отправлено: 16.11.2005, 17:34 |
|
Не зарегистрирован
|
QUOTE (Gedeon @ 16/11/2005, 13:52) | QUOTE (Ден @ 15/11/2005, 21:28) | Как загрузить файл в вектор ?
А как сохранить вектор в файл ? |
Каждому лектору в жопу по вектру. |
Наверное ты не знаеш как это делается. |
|
exp |
Отправлено: 16.11.2005, 21:43 |
|
Мастер участка
Группа: Участник
Сообщений: 304
|
Не надо бывалых обижать, Ден. Это ты не хочешь головой думать.
Если грузишь список строк, и тебе не известно какого они размера, то придется чуток погемориться: тебе придется считывать по 1 байту из файла и добавлять его к буферной строке пока не дойдешь до конца файла; кажный символ ты должен проверять на равенство символу конца строки (надеюсь, знаешь, что за символ, а то получается что я тут бисер мечу); в случае, если очередной символ есть символ конца строки, ты должен добавить его в вектор методом push_back().
Все. По этому описанию уже писать можно.
|
|
Ден |
Отправлено: 17.11.2005, 00:56 |
|
Не зарегистрирован
|
AnsiString t;
vector vi;
char *f;
vi.clear();
vi.begin();
OpenDialog1->Execute();
t=OpenDialog1->FileName;
handle=FileOpen(t,fmOpenRead);
len1=FileSeek(handle,0,2);
FileSeek(handle,0,0);
f=new char[len1+1];
FileRead(handle,f,len1);
FileClose(handle);
t="";
for (int x=0;x
t=t+f[x];
if (f[x]==00){vi.push_back(t);t="";x++;}
}
вот так работает, но медленно.
ВАрианты ? |
|
Asher |
Отправлено: 17.11.2005, 11:10 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
Попробуй такой вариант.
CODE |
//---------------------------------------------------------------------------
#pragma hdrstop
//---------------------------------------------------------------------------
#include <istream>
#include <fstream>
#include <string>
#include <vector>
//---------------------------------------------------------------------------
#pragma argsused
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
std::string sFile("E:\\Temp\\test.txt");//
std::ifstream fsFrom(sFile.c_str());//
if(!fsFrom) //
return -1; //Не открывается файл
std::vector<std::string> sArr; //
std::string sVal;//
int nCount = 0;
while(getline(fsFrom, sVal)){
sArr.push_back(sVal);
++nCount;
}
int nSize = sArr.size();//
fsFrom.close(); //
return 0;
}
//--------------------------------------------------------------------------- |
Это полный код консольного проекта.
P.S. Раньше не писал — думал ты халявщик. Код хочешь и все.
Но раз уж ты что-то написал — теперь не грех и поучаствовать
|
|
Ден |
Отправлено: 17.11.2005, 21:13 |
|
Не зарегистрирован
|
ну вот пошаманил я с векторами, работает на отлично, скорость высокая.
Как теперь это дело в файл сохранить ?
Знаю только 2 метода, один тормознутей другого. |
|
Ден |
Отправлено: 22.11.2005, 01:52 |
|
Не зарегистрирован
|
Підкажіть будьласка |
|
Asher |
Отправлено: 22.11.2005, 09:55 |
|
Мастер участка
Группа: Модератор
Сообщений: 550
|
Привет.
Выражайтесь яснее. Вчем конкретно Ваша проблема?
Если самому думать неохота, то вот:
Это вставить перед главной функцией предыдущего примера
CODE | #include <algorithm>
//---------------------------------------------------------------------------
class OutStr
{
std::ofstream *ofs_;
public:
OutStr(std::ofstream &e_ofs):ofs_(&e_ofs){};
void operator()(std::string &Obj)
{
*ofs_ << Obj <<std::endl;
}
};
//---------------------------------------------------------------------------
|
Это в конце функции перед return 0;
CODE | std::string sFileTo("E:\Temp\testout.txt");//
std::ofstream fsTo(sFileTo.c_str());//
if(!fsTo) //
return -2; //Не открывается файл
std::for_each(sArr.begin(), sArr.end(), OutStr(fsTo));//
fsTo.close(); // |
|
|