使用C++,我以二进制模式写入文件,使用如下所示的长度指示器方法:
ostringstream ID;
ID << b.getID(); //where b.getID() returns unsigned long
string IDStr = ID.str();
size_t IDlength = IDStr.length();
stream.write ((char *)(&IDlength), sizeof(size_t));
stream.write ((char *)(&IDStr),IDlength);我是这样读的:
string IDStr,ID;
stream.read ((char *) (&IDStr), sizeof(size_t));
int Result;
stringstream convert(IDStr);
if ( !(convert >> Result) )//give the value to Result using the chars in string
Result = 0;//if that fails set Result to 0
stream.read ((char *)ID,Result);是这样吗?我如何才能适当地阅读,我似乎不能正确的阅读代码,有什么帮助吗?
发布于 2014-05-23 18:42:14
写绳子..。
size_t IDlength = IDStr.length();
stream.write ((char const*)(&IDlength), sizeof(size_t));
stream.write (IDStr.c_str() ,IDlength);看绳子..。
size_t IDlength;
stream.read ((char *)(&IDlength), sizeof(size_t));
// Allocate memory to read the string.
char* s = new char[IDlength+1];
// Read the string.
stream.read (s, IDlength);
// Make sure to null-terminate the C string.
s[IDlength] = '\0';
// Create the std::string using the C string.
// Make sure the terminating null character is
// not left out.
IDStr.assign(s, IDlength+1);
// Deallocate memory allocated to read the C string.
delete [] s;https://stackoverflow.com/questions/23835925
复制相似问题