File inlezen in vector

Status
Niet open voor verdere reacties.

XXL66

Gebruiker
Lid geworden
11 dec 2007
Berichten
13
hall,

ik wil een file van coordinaten inlezen in een vector.
Het lukt wel voor de X Y en Z maar niet voor de name.

Die blijft blijkbaar blanco, wat doe ik verkeerd ?

thx


Code:
typedef struct
{ 
	char *name;
	double X_;
	double Y_;
	double Z_;
}Point;


int functie()
{


   char data[256];
   ifstream infile; 
   infile.open(file); 
   vector<Point> Points; 
   Point pnt;
   char *pch;
   while (infile.getline(data, 256))
   {
		pch = strtok (data," ,");
                                int pos = 0;
		while (pch != NULL)
		{

			switch (pos)
			{
			case 0:
				    sds_printf ("\nName: %s", pch);
					pnt.name=pch;
					break;
			case 1:
					pnt.X_=atof(pch);
					break;
			case 2:
					pnt.Y_=atof(pch);
					break;
			case 3:
					pnt.Z_=atof(pch);
					break;
			}
			pos++;
			pch = strtok (NULL, " ,");

		}
		Points.push_back(pnt);
  }
   infile.close();
   vector<Point>::iterator ii;
   for(ii=Points.begin(); ii!=Points.end(); ii++)  
   {  
		pnt=*ii;
		printf ("\nNAAM: %s",pnt.name);
		printf ("\n   X: %f",pnt.X_);
   }

}
 
Laatst bewerkt door een moderator:
hall,

ik wil een file van coordinaten inlezen in een vector.
Het lukt wel voor de X Y en Z maar niet voor de name.

Die blijft blijkbaar blanco, wat doe ik verkeerd ?

thx


typedef struct
{
char *name;
double X_;
double Y_;
double Z_;
}Point;


int functie()
{


char data[256];
ifstream infile;
infile.open(file);
vector<Point> Points;
Point pnt;
char *pch;
while (infile.getline(data, 256))
{
pch = strtok (data," ,");
int pos = 0;
while (pch != NULL)
{

switch (pos)
{
case 0:
sds_printf ("\nName: %s", pch);
pnt.name=pch;
break;
case 1:
pnt.X_=atof(pch);
break;
case 2:
pnt.Y_=atof(pch);
break;
case 3:
pnt.Z_=atof(pch);
break;
}
pos++;
pch = strtok (NULL, " ,");

}
Points.push_back(pnt);
}
infile.close();
vector<Point>::iterator ii;
for(ii=Points.begin(); ii!=Points.end(); ii++)
{
pnt=*ii;
printf ("\nNAAM: %s",pnt.name);
printf ("\n X: %f",pnt.X_);
}

}

laat eens zien hoe je de file wegschrijft. Schrijf je echt de string weg of alleen maar de pointer naar de string? Want in het tweede geval is het doodnormaal dat je niets krijgt:). Ook raad ik je aan van dit gewoon binair te doen..kan je de volledige struct inlezen door een simpel:
PHP:
infile.read( (char*) & pnt, sizeof( Point ) );
 
ik moet niets wegschrijven, in de code zie je dat ik die waarde van de naam wil laten printen en daar toont ie dus niet.

Ik heb het ondertussen wel opgelost door een geheel andere aanpak.
 
Zou je dan de oplossing ook kunnen posten zodat mensen die dezelfde vraag hebben en deze op opgelost zien staan, ook echt de oplossing hier kunnen vinden? :P
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan