Changeset 310 for trunk/src


Ignore:
Timestamp:
Mar 10, 2006 7:39:19 AM (18 years ago)
Author:
cxsong
Message:

modified readString to null terminate string

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/mesh/reader.cc

    r307 r310  
    5555
    5656//
    57 // parse object name
     57// parse dynamic length string
     58// first 4 bytes: length of string = len
     59// character array of length = len
    5860//
    5961void readString(const char* buf, string& str)
     
    6769
    6870        ptr += sizeof(int);
     71#ifdef DEBUG
     72        printf("readString(const char*,string&): len=%d, ptr=%x\n",
     73                        len, (unsigned)ptr);
     74#endif
    6975       
    7076        // read chars
    7177
    72         char* cstr = new char[len]; ;
     78        char* cstr = new char[len+1]; ;
     79        cstr[len] = '\0';
     80
    7381        ByteOrder<char>::OrderCopyArray(ptr, cstr, len);
    74         filterTrailingBlanks(cstr, len);
    75         str = cstr;
     82
     83#ifdef DEBUG
     84        printf("readString: str=%s=, %d bytes\n", cstr, len);
     85#endif
     86
     87        str.assign((const char*)cstr);
    7688
    7789        delete [] cstr;
     90}
     91
     92//
     93// read chars of length(len) from buffer (buf)
     94// return chars in string (null terminated)
     95//
     96void readString(const char* buf, string& str, int len)
     97{
     98        char* ch = new char[len];
     99
     100        ByteOrder<char>::OrderCopyArray(buf, ch, len);
     101        filterTrailingBlanks(ch, len);
     102
     103        str = ch;
     104
     105        delete [] ch;
    78106}
    79107
     
    192220        ByteOrder<int>::OrderCopyArray(&(data[0]), iptr, npts);
    193221}
     222
Note: See TracChangeset for help on using the changeset viewer.