c++ - Vector print out wrong value -


hi got question following code. copy char string, read out of file vector , print out vector on screen. program copy string out ouf textfile vector gives out last element of vector. did wrong here?? :

#include <fstream> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <string.h> #include <sstream> #include <vector> #include "mbusread.h" using namespace std;   int main() {      int dev_nr;     int anzahl;     ifstream addr;     string buffer;     string dev_no;     stringstream devss;     char *reg_no_c = new char [buffer.length()+1];     char *start_reg_c = new char [buffer.length()+1];     char *adresse_c = new char [buffer.length()+1];     char *id_c = new char [buffer.length()+1];     char *zeit_c = new char [buffer.length()+1];      addr.open("addr.xml", ios::in); //addressendatei auslesen     //anzahl suchen     {         getline(addr, buffer);     }   while(strcmp (buffer.c_str(), "<anzahl>")!=0);         getline(addr, buffer);          stringstream bufferss(buffer);         bufferss >> anzahl;         anzahl++;          vector<const char *> ip(anzahl);         vector<const char *> start_reg(anzahl);         vector<const char *> reg_no(anzahl);         vector<const char *> id(anzahl);         vector<const char *> zeit(anzahl);       for(dev_nr=1;dev_nr<anzahl;dev_nr++)     {         addr.seekg(ios::beg);         devss << "<dev" << dev_nr << ">";         dev_no = devss.str();         devss.str("");         devss.clear();          {             getline(addr, buffer);             if(addr.eof())             {              break;             }           } while (strcmp (buffer.c_str(),dev_no.c_str()) != 0);          // ip suchen         {             getline(addr, buffer);         }while(strcmp (buffer.c_str(), "<ip>")!=0);         getline(addr, buffer);         if(addr.eof())         {          break;         }         strcpy(adresse_c, buffer.c_str()); // ip einlesen         ip[dev_nr - 1] = adresse_c;         cout << ip[dev_nr - 1] << endl;          // start_reg suchen         {             getline(addr, buffer);         }while(strcmp(buffer.c_str(), "<start_reg>")!=0);         if(addr.eof())         {          break;         }         getline(addr, buffer);              //schreibt startregister in daten         strcpy(start_reg_c, buffer.c_str()); // ip einlesen         start_reg[dev_nr - 1] = start_reg_c;         cout << start_reg[dev_nr - 1] << endl;          // reg_no suchen         {             getline(addr, buffer);         }while(strcmp(buffer.c_str(), "<reg_no>")!=0);         if(addr.eof())         {          break;         }         getline(addr, buffer);              //schreibt die anzahl der ausgelesenen register in daten         strcpy(reg_no_c, buffer.c_str()); // ip einlesen         reg_no[dev_nr - 1] = reg_no_c;         cout << reg_no[dev_nr - 1] << endl;          // id suchen         {             getline(addr, buffer);         }while(strcmp(buffer.c_str(), "<id>")!=0);         if(addr.eof())         {          break;         }         getline(addr, buffer);              //schreibt die id des sensors in daten         strcpy(id_c, buffer.c_str()); // ip einlesen         id[dev_nr - 1] = id_c;         cout << id[dev_nr - 1] << endl;                  {             getline(addr, buffer);         }while(strcmp(buffer.c_str(), "<time>")!=0);         if(addr.eof())         {             break;         }         getline(addr, buffer);         strcpy(zeit_c, buffer.c_str()); // ip einlesen         zeit[dev_nr - 1] = zeit_c;         cout << zeit[dev_nr - 1] << endl;      }      for(int = 0; < anzahl; i++)     {         cout << "ip " << ip[i] << endl;         cout << "id " << id[i] << endl;         cout << "start_reg " << start_reg[i] << endl;         cout << "reg_no " << reg_no[i] << endl;         cout << "zeit " << zeit[i] << endl;     } } 

your problem starts right @ top of code

string buffer; string dev_no; stringstream devss; char *reg_no_c = new char [buffer.length()+1]; char *start_reg_c = new char [buffer.length()+1]; char *adresse_c = new char [buffer.length()+1]; char *id_c = new char [buffer.length()+1]; char *zeit_c = new char [buffer.length()+1]; 

a point buffer empty, length() returns 0 , allocate single byte c strings.


Comments

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -