#include <iostream>
#include <fstream>
#include <conio.h>
#include <vector>
#include <string>
using namespace std;
template <typename elemType>
void readFromFile(string filename, vector <elemType> &vec)
{
fstream iFile;
iFile.open (filename.c_str(), ios::in | ios::binary);
if (!iFile)
{
cerr << "\nNemogu otvoriti " << filename;
return;
}
while (iFile)
{
elemType *obj=new elemType;
iFile.read( (char*)obj, sizeof(elemType));
vec.push_back(*obj);
}
iFile.close();
}
template <typename elemType>
void writeToFile(string filename, vector <elemType> &vec)
{
ofstream oFile;
oFile.open(filename.c_str(), ios::trunc | ios::binary | ios::out);
if (!oFile)
{ cerr << "\nNemogu da otvorim ya upis fajl: " << filename;
return;
}
for (int i=0; i<vec.size(); i++)
{
oFile.write( (char *)&vec[i], sizeof(elemType));
}
oFile.close();
}
template <typename elemType>
void showAll(vector <elemType> &vec)
{
for (int i = 0; i<vec.size(); i++)
{
cout << vec[i] << endl;
}
}
void main (void)
{
vector <string> vecStr;
strting str;
char c;
do
{
cout << "\nUnesite rijec: " << endl;
cin >> str;
vecStr.push_back(str);
cout << "\Ako zelite jos pritisnite 'y'" << endl;
cin >> c;
}while (c=='y' || c=='Y');
writeToFile("asd.dat", vecStr);
vecStr.clear();
readFromFile("asd.dat", vecStr);
showAll(vecStr);
getch();
return;
}
Ovo je code s kojim imam problema. Kada unesem string,kao u gornjem primjeru i nesto upisem (par stringova) te to snimim u file i onda iscitam u vector on mi pokazuje nekakve znakove koji nemaju veze sa mojim tekstom.
Isto tako kada umjesto stringa stavim recimo int, dobijem, kada iscitam ponovo iz filea u vector, moje brojeve i jos jedan 6-sifreni broj.
Moze li mi neko malo ovo objasniti.
Ovaj code je samo jednostavniji jer sa ovim template-om kojim citam i pisem u fajl hocu da radim sa drugim objektima klasa koje napravim. Do sada imam samo probleme.
Hvala unaprijed.
////////////////////